单链表的指针

时间:2016-06-28 18:00:25

标签: algorithm pointers linked-list

将项目附加到单个链接列表时,典型步骤为:

  1. 创建新节点y
  2. list.heady
  3. 中复制y=list.head
  4. 滑动所有节点,直到我们发现y的下一个字段为NULLy=y.next
  5. 添加节点(y.next=newNode
  6. 现在我问自己:如果我做y = list.headylist.head基本上有两个不同的记忆位置,对吗?如果我现在y.next = newNode,现在下一个字段list.head已更改(在newNode中)?如果是这样,为什么? ylist.head不是两个不同的对象吗?我可能会把我与指针混淆......

4 个答案:

答案 0 :(得分:0)

(假设您不是在谈论特定的编程语言)

如果您创建新节点y并将其指向list.head,则它们将指向相同的内存位置。

但是,当您说将list.head复制到y时,它取决于您是DeepCopy还是ShallowCopy列表到y。 好像你做y = list.head似乎list改变了。

答案 1 :(得分:0)

如果您要附加到列表的开头,则希望新节点 y 位于前面。

  1. 创建新节点 y (并设置任何数据)
  2. y.next = list.head (想象一下将 y 放在列表前面)
  3. list.head = y (将 y 识别为列表的新开头)
  4. 希望有所帮助

答案 2 :(得分:0)

singly linked list中,每个node通常都有属性/值:

  • 数据

当您将pointer设置为整个head的{​​{1}}时,linked list保持与完全相同的内存位置{ {1}} {em} pointer。{/}

当您设置pointer head值时,您要在node的尾部添加新的node's内存位置。

答案 3 :(得分:0)

情况就是这样:我想在列表的队列中添加一个新节点...当我执行y = y.next来扫描列表时,是否只更改了他的状态或者它开始了y的副本.next节点?