gpt4 book ai didi

c - 如何保存指向最后一个节点的指针

转载 作者:行者123 更新时间:2023-11-30 14:48:20 25 4
gpt4 key购买 nike

这里我有一个双向链表的按位置删除函数。我试图保存指向最后一个节点的指针,以便在反向打印时,我不必迭代到最后一个节点。

node* deleteByPos(node* list, node** last, int position) {
int c = 0;
node* temp;
node* prev;

temp=list;
if (temp==NULL) {
printf("No nodes available to delete\n\n");
return list;
} else {
while(temp!=NULL && c != position) {
prev=temp;
temp=temp->next;
c++;
}
if (temp==NULL) {
printf("Reached end of list, position not available\n\n");
return list;
} else if (temp->next == NULL) {
prev->next=temp->next;
temp->next->prev = prev;
&last = temp->next;
free(temp);
return list;
} else {
prev->next=temp->next;
temp->next->prev = prev;
free(temp);
return list;
}
}
}

当我尝试删除列表中的最后一个位置时,出现段错误。我该如何解决?

最佳答案

在 else block else if (tmp->next == NULL) 中,有一行

temp->next->prev = prev;

这是无效的。您正在尝试使用空指针。

关于c - 如何保存指向最后一个节点的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50479356/

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