不明白这个编码 - 列表指针

时间:2014-01-13 01:14:12

标签: arrays pointers singly-linked-list

我在这方面遇到了一些很大的困难。

对于数组[6,10,15,24],单链表如何? p.next指的是什么?

p.next = p.next.next;
p.next = new Node(19, p.next);
p.next.next = new Node(28);
p.next.next = p;

如果有人能向我解释发生了什么,我将不胜感激。我一直在努力工作,而且一直困扰着我。

1 个答案:

答案 0 :(得分:0)

基本上,Node有一个值并指向一个新节点。

如果Node的构造函数是Node(value,nextNode),那么这里有一些代码可以创建一个将该数组转换为NodeList的列表。

int[] arr = {6, 10, 15, 24};
Node currentNode = null;
for(int x = arr.length - 1; x >= 0; x--)
currentNode = new Node(arr[x], currentNode);

这有点复杂,但我会尝试解释它。你有你的数组和一个null的Node。然后,您向后遍历阵列。您创建一个新的Node,它具有数组的最后一个索引的值并指向null。然后,向下移动阵列并使用一个指向您创建的最后一个节点的新节点。希望这是有道理的。随意提问。

.next指向列表中的下一个节点。

编辑:以下所有内容

我将用于节点的表示法:[val]->nodePointingTo

完成后,列表将如下所示。

[6] -> [10] -> [15] -> [24] -> null 在线性NodeList中,必须在结尾使用null,因为它是显示结束的唯一方法。

这就是循环中发生的事情。

currentNode的值:null。 currentNode的值:[24] -> null currentNode的值:[15] -> [24] //我只会指向currentNode的下一个节点 currentNode的值:[10] -> [15] currentNode的值:[6] -> [10] 结束。 最终输出将为6,指向一个值为10的节点。该节点指向一个值为15的节点。该节点指向一个值为24的节点。该节点为指向null,因为它没有其他指向它。 我希望这可以解决问题。