2 回答

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊
考慮這里的代碼,我在 main 方法中添加的每個(gè)節(jié)點(diǎn)都是 Node 類的一個(gè)對(duì)象,并且該類包含 Node next ,它是對(duì)下一個(gè)節(jié)點(diǎn)的引用。例如,第一個(gè)具有 value 的節(jié)點(diǎn)22包含對(duì)具有 value 的第二個(gè)節(jié)點(diǎn)的引用2。例如,如果只添加了一個(gè)節(jié)點(diǎn),則下一個(gè)節(jié)點(diǎn)將引用 null,因?yàn)闆]有第二個(gè)節(jié)點(diǎn)。在每個(gè)節(jié)點(diǎn)對(duì)象中,節(jié)點(diǎn)下一個(gè)引用為您提供下一個(gè)節(jié)點(diǎn)。但我強(qiáng)烈建議你閱讀 java 中的引用,因?yàn)槟阍谶@里錯(cuò)過了一個(gè)基本概念。
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();
}
}

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
假設(shè)你有一個(gè) Node n
。Node 的類定義包含一個(gè)成員變量聲明,Node next;
這意味著 Node 類及其子類的每個(gè)實(shí)例都會(huì)有一個(gè) typeNode
和 name的成員變量next
。因此,沒有名為 的方法next
。相反,它是一個(gè)被訪問的變量。這就是該語句current.next= current.next.next;
合法的原因 - 您不能寫入函數(shù)調(diào)用的結(jié)果(通常)。但是,您可以寫入成員變量(或從函數(shù)調(diào)用返回的 xyz 類實(shí)例的成員變量)。
添加回答
舉報(bào)