gpt4 book ai didi

c - 在链表中的另外两个节点之间插入节点

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

所以我想在链表的两个节点之间添加一个新节点,其数据字段基本上包含前一个节点和下一个节点的总和。我不明白为什么一旦进入 while 循环就无法退出。有什么建议么?谢谢。

这是我的代码:

void modify_list (node *head) {
nodo *it = head;
nodo *prev = NULL;
int n_prev = 0;
int n_next = 0;
int sum = 0;
it = it->next;
prev = it;
while (it->next != NULL) {
it->data = n_next;
prev->data = n_prev;
sum = n_next + n_prev;
node *new;
new = malloc(sizeof(node));
if (new == NULL) {
printf("Error.\n");
return;
}
memset(nuovo, 0, sizeof(node));
new->data = sum;
prev->next = new;
new->next = it;
sum = 0;
prev = it;
it = it->next;
}

}

最佳答案

当您开始迭代时,您正在使用:

it = it->next;
prev = it;

itprev 指向同一个节点。过了一会儿,您将使用:

prev->next = new;

这与:

相同
it->next = new;

这意味着it->next指向新节点。这意味着,您永远不会真正越过新创建的节点。

您可以使用以下方法修复此问题:

prev = it;
it = it->next;

while 循环开始之前。

我会通过使用使其更加健壮:

prev = it;
if ( it != NULL )
{
it = it->next;
}

此时,it 可能为 NULL。将 while 语句中的条件更改为:

while (it != NULL) {

关于c - 在链表中的另外两个节点之间插入节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28680737/

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