亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么node.next轉到下一個節點

為什么node.next轉到下一個節點

陪伴而非守候 2023-08-23 17:18:37
我對編程有點陌生,目前正在研究鏈接列表。我在網上某個地方得到了這個代碼。public class Node {    Node next;    int data;    public Node(int data)     {        this.data=data;    }    public class LinkedList    {            Node head;        public void delete(int data)         {                Node current=head;            while (current.next!=null)            {                 if (current.next.data==data)                {                    current.next= current.next.next;                }             }         }     }}我不明白的是為什么node.next指向下一個節點?在 Node 類中,接下來是數據類型 Node。Node 類中沒有 next 方法,但在LinkedList類中調用時current.next它假定引用下一個節點。
查看完整描述

2 回答

?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

考慮這里的代碼,我在 main 方法中添加的每個節點都是 Node 類的一個對象,并且該類包含 Node next ,它是對下一個節點的引用。例如,第一個具有 value 的節點22包含對具有 value 的第二個節點的引用2。例如,如果只添加了一個節點,則下一個節點將引用 null,因為沒有第二個節點。在每個節點對象中,節點下一個引用為您提供下一個節點。但我強烈建議你閱讀 java 中的引用,因為你在這里錯過了一個基本概念。


import java.util.Objects;


class LinkedList<T> {


    private class Node<E> {

        Node<E> next; 

        E val;


        Node(E val) {

            this.val = val;

        }

    }


    private Node<T> head;


    void add(T val) {

        Node<T> node = new Node<>(val);


        if (head == null) {

            head = node;

        } else {

            Node<T> p = head;


            while (p.next != null) {

                p = p.next;

            }


            p.next = node;

        }

    }


    void show() {

        if (head == null)

            return;


        Node<T> p = Objects.requireNonNull(head);


        while (p.next != null) {

            System.out.print(p.val + " ");

            p = p.next;

        }


        System.out.println(p.val);

    }

}


class Main {


    public static void main(String... args) {

        LinkedList<Integer> ll = new LinkedList<>();


        ll.add(22);

        ll.add(2);

        ll.add(4);

        ll.add(32);

        ll.add(3);

        ll.add(1);

        ll.add(44);


        ll.show();


    }

}


查看完整回答
反對 回復 2023-08-23
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

假設你有一個 Node n。Node 的類定義包含一個成員變量聲明,Node next;這意味著 Node 類及其子類的每個實例都會有一個 typeNode和 name的成員變量next。因此,沒有名為 的方法next。相反,它是一個被訪問的變量。這就是該語句current.next= current.next.next;合法的原因 - 您不能寫入函數調用的結果(通常)。但是,您可以寫入成員變量(或從函數調用返回的 xyz 類實例的成員變量)。



查看完整回答
反對 回復 2023-08-23
  • 2 回答
  • 0 關注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號