【发布时间】:2015-11-13 17:14:03
【问题描述】:
假设我有一个这样的列表:
[1]-> [2]-> [3]-> [4]-> [5]->NULL
其中 1 的值是头部,5 是尾部。 我正在关注此处显示的示例代码:https://codereview.stackexchange.com/questions/29784/reversing-a-linked-list-and-adding-removing-nodes
我不明白的是这一行(在addtoFront函数中)
ptr->value = input;
ptr->next = head; // Point next value to the previous head
head = ptr;
这就是我得到的。
ptr->value = input
这一行用给定的值初始化名为指针的节点
`ptr->next = head;`
这一行将新项目的下一个指针(要插入到前面)设置为前一个头,所以我们有这样的东西:
在前面插入 [9],所以:
[9] (new head points to old head)
[9] -> [1] (9's next pointer points to 1)
我不明白的是这一行:
head = ptr;
读到这让我感到困惑,因为我将其解释为将两个节点设置为彼此相等,即 [1] 变为 [9],因此我们有 2 个节点是 [9],[9]->[9]->[2]->[3]->[4]->[5]->NULL
但显然情况并非如此。
一旦他们没有箭头符号->,我似乎对正在发生的事情迷失了方向(对于目前的大多数功能)。任何帮助将不胜感激!
【问题讨论】:
-
head总是指向第一个节点,所以当你插入一个新的第一个节点时,你必须让 head 指向那个节点。
标签: c data-structures linked-list nodes