总的来说,我的程序用于在排序的双向链表中插入和删除节点。插入工作并从链表中删除第一个节点工作正常,除了删除最后一个节点。此外,删除中间和末尾的节点不起作用。如果我尝试删除最后一个节点,我会被引导回 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;
}
}
}