public void insertIt (Node firstNode, Node newNode) {
firstNode.next = newNode;
newNode.next = null;
}
我找不到使用.next
的课程,有人能告诉我吗?另外,我真的不明白这一点。我正在设置firstNode.next=newNode
,那么firstNode
将如何包含firstNode.next
?我希望这是有道理的。
从我的笔记:
> Example 1 to practice with links:
> Node node1 = new Node(22); Node node2
> = new Node(44); firstNode = node1; node1.next = node2; node2.next = null;
> Produces:
> firstNode -> 22 -> 44 -> null So firstNode.data is 22 and
> firstNode.next.data is 44. Since
> firstNode.next.next is null, a
> reference to firstNode.next.next.data
> is an error.
>
> Example 2 to practice with links: What
> is node3.data ?
> node3 -> 99 -> null
> Answer: 99
>
> Example 3 to practice with links:
> public void insertIt (Node firstNode,
> Node newNode) {
> firstNode.next = newNode;
> newNode.next = null; }
编辑:如果将节点分配给另一个节点会怎样?
例如,head - > 2 - > 3 - >空
node1 = node2;
有什么变化? node1
的值是3吗?还是改变它的参考/指针?
答案 0 :(得分:1)
看到你的评论后,我想我明白你要做的是什么。此代码来自LinkedList Data Structure的实现。您应该阅读维基百科文章,但简而言之,链接列表由Nodes
组成,其中包含data
元素以及指向列表中下一个元素的指针。因此,可以仅在知道第一个元素的情况下按顺序遍历列表。 .next
用于访问相对于当前节点的下一个数据成员。插入元素时,通常需要执行以下操作:
public void insertNode(Node nodeBefore, Node newNode){
newNode.next = nodeBefore.next;
nodeBefore.next = newNode;
}
此方法会在Node
newNode
之后插入Node
nodeBefore
,以便当您遍历列表时,在到达nodeBefore
后,您会到达{{1} }}。通常,列表的末尾由newNode
指针表示。
修改要发表评论,课程null
可能如下所示:
Node
这就是public class Node{
public Node next;
public Object data;
}
的来源。它是next
类
答案 1 :(得分:1)
看起来你正在学习链接列表......这个方法实际上在最后添加了另一个节点:
firstNode newNode
+------+------+ +------+------+
| data | next-|--->| data | null |
+------+------+ +------+------+