gpt4 book ai didi

一个指针的变化会影响另一个指针

转载 作者:太空宇宙 更新时间:2023-11-04 08:35:01 24 4
gpt4 key购买 nike

komv->next 怎么可能在 while 循环结束之前在此代码上变为 NULL?我注意到在 town->previous->next=town->next 这行之后变成 NULL 但我不明白为什么会这样。程序因段错误而终止。

komv=list->First;
while ((komv->next)!=NULL)
{


if(town->num>=komv->next->num)
{

town->previous->next=town->next;

if(town->next!=NULL)
town->next->previous=town->previous;
town->next=komv->next;
town->previous=komv;
komv->next->previous=town; // gdb say komv->next=NULL
komv->next=town;

break;
}
komv=komv->next;


}

最佳答案

如果 komv 是列表中 town 之前的节点,则 town->previous == komv。如果 town 是最后一个节点,则 town->next == NULL。当这些同时为真时,这:

                town->previous->next=town->next;

减少到:

                komv->next = NULL;

在那种情况下,似乎不需要修改列表,因此您可以通过将条件修改为来解决问题

        if ((town != komv->next) && (town->num >= komv->next->num)) {

也可能有更好的解决方案,具体取决于您想要的假设和行为。例如,如果可以接受在具有相同 num 的节点之后 插入town 而不是之前,那么您可以简单地使用以下条件:

        if (town->num > komv->next->num) {

关于一个指针的变化会影响另一个指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26632667/

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