我是链表的新手。在 void main(( 中,我知道 Start 是类Node的对象,因此使用该对象我们调用了节点类的下一个变量,如 Start.next,但我没有得到Start.next.next行它是什么意思?
接下来只有一个变量,那么为什么开始调用下一个? 并且程序工作正常。
public class list {
public static void main(String args[]) {
Node Start = new Node(1);
Start.next = new Node(2);
Start.next.next = new Node(3);
Start.next.next.next = new Node(4);
for (Node list = Start; list != null; list = list.next) {
System.out.println(list.data + " ");
}
System.out.println("Null");
}
}
class Node {
int data;
Node next;
Node(int data) {
this.data = data;
}
}
输出
1
2
3
4
Null
Node Start =new Node(1);
Start.next = new Node(2);
Start
是一个Node
,它有一个名为next
的成员变量,该成员变量也是一个Node
。(该Node
也有自己的next
节点,依此类推。每个Node
都有自己的next
。 因此,当您说Start.next.next
时,您正在访问列表中的下一个节点。(总体上是第 3 个节点,Start
节点之后的第二个节点。
Start.next.next
是Start
中存在的Node next
的成员变量。
以下是细分:
Node Start
包含Node next
.Node next
包含自己的成员变量Node next
。
等等。
Start
是Node
类的一个实例。Node
类包含data
和next
等成员,其中data
是整数,next
是Node
。因此,我们可以等价地说:
Node Start = new Node();
Node Second = new Node();
Start.next = Second;
Node Third = new Node();
Second.next = Third; /* And this is equivalent to Start.next.next = Third,
because Start.next and Second refer to the same object instance. */
本质上,Start.next 是Node
的另一个实例,因此,Start.next
引用的对象也将包含一个.next
成员。
如果你能这样想,你可以更好地理解它。
考虑Node
类是一个拥有一些数据和父亲的人:
class Person {
//some data
Person father;
Person(/*some data*/) {
/*this.(some data) = some data;*/
}
}
儿子是Person
,儿子有一些数据和父亲,父亲也是一个人,父亲也有一些数据,还有一个父亲是(祖父(,等等......