【问题标题】:Don't understand this coding - list pointers不明白这个编码 - 列表指针
【发布时间】:2014-01-13 01:14:11
【问题描述】:

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

数组 [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;

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

【问题讨论】:

  • 这是 c++ 吗?您需要标记语言

标签: arrays pointers singly-linked-list


【解决方案1】:

基本上,一个 Node 有一个值并指向一个新的 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。然后,您向下移动数组并拥有一个指向您创建的最后一个节点的新节点。希望这是有道理的。如有问题,请随时发表评论。

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

编辑:以下所有内容

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

列表完成后将如下所示。

[6] -> [10] -> [15] -> [24] -> null 在线性 NodeList 中,必须在末尾使用 null,因为它是表明存在结束的唯一方式。

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

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

【讨论】:

  • 对不起,你能画一下吗?我没有得到任何它:(
  • @user3138212 我更新了我的回复。希望它现在更有意义。
  • 另外,您可以链接.next 的原因是因为.next 指向另一个节点。所以如果你说head是值为6的节点,head.next指向值为10的节点,head.next.next指向值为10的节点,然后指向它的下一个节点,即值为 15。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-25
  • 1970-01-01
  • 2012-09-01
相关资源
最近更新 更多