gpt4 book ai didi

c - 如何替换双向链表中的元素

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

我有三个相同类型的链表节点,schcurr、search 和 schtemp。但是只有 search 有链接。 schcurr 和 schtemp 未链接。我使用搜索来查找要放置 schcurr 的位置,并且使用 schtemp 只是为了帮助我保留链接。如果满足以下条件,则 schcurr 将主导搜索。所以,我想用 schcurr 代替搜索。搜索已在列表中,并且 schcurr 尚未连接到任何内容。

我将代码的相关部分如下,但我卡在那里:(

P.S: TC1 为 int,WF1 为 float,且不为 NULL。

if(schcurr.TC1==search.TC1)
{
if(schcurr.WF1>search.WF1)
{
//schcurr dominates search.
schcurr.next=seach.next;
schcurr.prev=seach.prev;
}
}

现在我需要更正 search.prev 的 next 和 search.next 的 prev。我想我无法设置 search.prev.next=schcurr;和 search.next.prev=schcurr;我可以吗?

感谢任何帮助。

有关节点的信息定义:

struct schedules{
float WF1;
int TC1;
schedules *prev;
schedules *next;
};
struct schedules *sch;
struct schedules *head;
struct schedules *tail;
struct schedules *schtemp;
struct schedules *search;

最佳答案

如果您的双向链表是正确的,因为您可以从搜索节点双向遍历(上一个和下一个),那么您就可以完全按照您所说的操作。

search.prev.next = schcurr;
search.next.prev = schurr;

编辑:但是,如果您这样做,则需要进行空检查。例如,如果您已经位于链接列表的开头,那么 search.prev 可能会指向 null。同样,如果您位于链接列表的末尾,search.next 将为 null,因此如果您执行 search.next.prev = some,您将有效正在做 null.next = Something 并违反规定。

关于c - 如何替换双向链表中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13893816/

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