gpt4 book ai didi

c - 从 C 语言的双向链表中删除节点

转载 作者:行者123 更新时间:2023-11-30 15:46:12 27 4
gpt4 key购买 nike

总的来说,我的程序是用于在排序的双向链表中插入和删除节点。插入工作正常,从链表中删除第一个节点工作正常,但删除最后一个节点除外。另外,删除中间和末尾的节点也不起作用。如果我尝试删除最后一个节点,我会被带回到 main();如果我尝试删除中间的节点,程序就会崩溃。感谢您的帮助!

void remove(int n){
struct node* help = head;
if(head->data == n){
if (head->next)
help->next->prev = NULL;
head = help->next;
} else{
while(help){
if(help->data == n){
if(help->next)
help->next->prev = help->prev;
help->prev->next = help->next;
} else help = help->next;
}
}
}

最佳答案

if(help->data ==n 为 true 时,中断 while 循环或更新指向下一项的 help 指针。

类似于

    //your code
...
while(help){
if(help->data == n){
if(help->next)
help->next->prev = help->prev;
help->prev->next = help->next;
//if you don't want to remove all nodes that have data 'n'
break;
}
//if you want to remove all nodes that have data 'n' remove else.
//but keep help = help->next
else
help = help->next;

...
//your code

关于c - 从 C 语言的双向链表中删除节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18509733/

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