我的代码适用于链接列表开始处的元素,但不适用于中间或末尾的元素。感谢你的帮助!从双向链表中删除一个元素
void remove(){
if (!head)
printf("\nNo nodes to delete. List is empty.");
else{
int n;
struct node* help = head;
printf("Enter an element to delete: ");
scanf("%d", &n);
if(head->data == n){
help-> next->prev = 0;
head = help -> next;
} else{
while(help -> next){
if(help -> data == n){
help -> next -> prev = help -> prev;
help -> prev -> next = help -> next;
}
else help = help -> next;
}
}
}
}
为什么'n'不能作为'remove()'的参数? –
@意义 - 为什么人们总是挑选代码而不是回答提出的问题?你的问题与被问到的问题无关,并且发布的代码很可能被简化为发布到SO - 而不是由提问者为实际项目编写的方式。 – xaxxon
@shail给了我们具体的例子,说明它的失败会有帮助,因为你的代码有很多问题,并且很难全部指出它们,而无需为你重写代码(这不应该在SO上完成) – xaxxon