c++ - 在遍历链表时,如何避免分配链表中的头指针?

标签 c++ pointers linked-list

我正在尝试在 C++ 中实现链表,并使用以下方法对其进行初始化:

ListNode *ll = new ListNode(0);
ListNode *head = ll;
for(int i = 1; i <= 8; i++) {
    ll->next = &ListNode(i);
    ll = ll->Next;
}

问题是在每次迭代期间,当 ll 被重新分配以指向它的下一个时,头指针也会被重新分配。所以,在每次迭代之后,head 指针看起来像这样:

0 -> 1

0 -> 2

0 -> 3

...

0 -> 8

而不是它应该是的:

0 -> 1 -> 2 ... -> 8

如何在移动迭代指针时保持 Head 指针不被更改?

这是 ListNode 结构体:

struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
} typedef ListNode;

最佳答案

你的代码有一个大问题:

temp->next = &ListNode(i);

这会尝试获取临时变量的地址并将其存储在某处。但是,在您移动到下一行后,temporary 会立即被清除,因此您最终会得到一个指向垃圾的地址。

顺便说一句,这甚至不应该是可编译的,所以如果您的编译器允许这样做,那将是编译器中的一个错误。

关于c++ - 在遍历链表时,如何避免分配链表中的头指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35727728/

相关文章:

c++ - C++ 代码中 3D 数组的输出

c++ - C++中的特征库是否有动态 vector 或矩阵

objective-c - 指点一下,我使用得正确吗? Objective-c/ cocoa

可以直接将值赋给指针吗?

c++ - 错误 : expected unqualified-id before ‘->’ token

c++ - 如何打印一个简单的链表(C++)?

c++ - 打破封装是个好主意吗?

c++ - `nullopt` 可以作为非类型模板参数传递吗?

c - 这个C语言程序有什么问题吗?它终止了。我很难理解指针指针中的读取输入字符串

java - 仅检索LinkedList中的一项特定数据(数据字段保存多条数据)