gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:44:01 27 4
gpt4 key购买 nike

我正在尝试在 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com