gpt4 book ai didi

c - 如何在特定位置添加节点?

转载 作者:行者123 更新时间:2023-12-04 06:49:52 24 4
gpt4 key购买 nike

我一直在使用双向链表。除了应该在“whereX”之前添加“who”副本的功能外,一切正常[参见下面的代码]。为什么该功能不起作用?

void addNodeAt(Node *whereX, Node *who)
{
//copy
Node *temp = (Node*)malloc(sizeof(Node));
temp->count = who->count;
strcpy(temp->word,who->word);
temp->before = whereX->before;
temp->after = whereX;

//paste
if(whereX->after == who)
whereX->after = who->after;

whereX->before = temp;
}

编辑:

回复 user326404 说:

'注意:您的函数确实存在一个缺陷,无法插入 who 作为列表的新头。它将插入,但您永远不会返回新的头节点,因此列表丢失了。

如果我有一个 Node *head 作为全局变量怎么办。我怎样才能重新设计头部而不返回它?

最佳答案

您不会让现有链接了解新创建的临时节点。将以下代码添加到函数的末尾,让链的前面部分指向新创建的节点。

if (whereX->before != NULL)
whereX->before->after = temp;

注意:您的函数确实存在一个缺陷,无法插入 who作为列表的新头。它将插入,但您永远不会返回新的头节点,因此列表会丢失。

关于c - 如何在特定位置添加节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3286728/

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