gpt4 book ai didi

c - <0xC0000005> 插入链表时出错

转载 作者:行者123 更新时间:2023-11-30 15:26:28 25 4
gpt4 key购买 nike

我无法解决以下函数中的错误。该函数的目的是将数字按升序插入到链表中。

当列表为空/插入第一个节点时,此函数工作正常,但我收到错误 Process returned -1073741819 <0xC0000005>当它之后尝试插入节点时。

Node *orderedInsert(Node *p, int newval)
{
Node* q = (Node*)malloc(sizeof(Node));
q->data = newval;
if(p == NULL || newval <= p->data)
{
q->next = p;
return q;
}
else
{
Node* tmp = p;
while(tmp != NULL && tmp->data <= newval)
{
tmp = tmp->next;
}
q->next = tmp->next;
tmp->next = q;
return p;
}
}

我意识到 0xC0000005 错误代表访问冲突;在尝试调试此问题时,我注意到访问 tmp->next不会给我任何预期的结果:我猜我的 tmp 有问题节点,我只是不太知道什么以及如何修复它。

谁能帮助我理解我做错了什么?

最佳答案

问题是您在需要插入的地方插入了过去。这意味着如果您插入的节点具有最大值,您将到达 tmp 为 NULL 的末尾,然后您将尝试设置 tmp->nextq。您可能想要使用位于 tmp 后面一个元素的 prev 指针,因此您可以在 prev 处插入。

关于c - <0xC0000005> 插入链表时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27339930/

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