gpt4 book ai didi

c - 删除链接列表中的项目 - 程序无法运行

转载 作者:行者123 更新时间:2023-11-30 21:05:55 25 4
gpt4 key购买 nike

我的程序中有这个函数,可以删除链接列表上的特定值,例如:

Value to be deleted: 8

Linked List: 2 -> 9 -> 8 -> 3 -> 5 -> X

List after removal of value: 2 -> 9 -> 3 -> 5 -> X

问题是,它没有按预期工作。下面是我的函数的代码:

void removeValue(DLList L, int value){
assert (L != NULL);
DLListNodeP curr = L->curr;
while (curr != NULL){
if (curr->value == value){
if (L->first == L->last){ // If there is only one item in the list
L->curr = NULL;
L->first = NULL;
L->last = NULL;
L->nitems = 0;
}

else if (L->curr->next == NULL){ // If current item is the last item on the list
L->curr->prev->next = NULL;
L->last = L->curr->prev;
free (L->curr);
L->last->next = NULL;
L->curr = L->last;
L->nitems--;
}

else if (L->curr->prev == NULL){ // If current item is the first item on the list
L->curr = L->curr->next;
free (L->curr->prev);
L->curr->prev = NULL;
L->first = L->curr;
L->nitems--;
}

else {
DLListNodeP next = L->curr->next;
L->curr = NULL;
L->curr = next;
L->curr->prev->next = L->curr->next;
L->curr->next->prev = L->curr->prev;
L->nitems--;
}

L->curr = L->curr->next;
}
else {
L->curr = L->curr->next;
}
}

return; }

我尝试过修改代码,一次修改一部分,但仍然无法使其工作;我几乎尝试了一切。我可以做些什么来使这段代码正常工作吗?谢谢

最佳答案

DLListNodeP prev = L->curr, next = L->curr->next; // Check if curr exists
if (prev->value == value) {
L->curr = next;
return;
}

while (next != NULL){
if (next->value == value) {
prev->next = next->next;
break;
}
prev = next;
next = next->next;
}

关于c - 删除链接列表中的项目 - 程序无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52099710/

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