C 删除链接列表的第一个节点
这就是问题所在。我正在尝试删除链接列表的第一个节点,不幸的是,我仅限于使用:C 删除链接列表的第一个节点,c,pointers,linked-list,C,Pointers,Linked List,这就是问题所在。我正在尝试删除链接列表的第一个节点,不幸的是,我仅限于使用: int delete(node* head, int i) 因此,与其他线程建议的操作不同,我不能在参数中返回节点或使用**节点。在删除之前和之后打印集合将输出0,而不是第一个节点: //before 12, 1, 14, //after 0, 1, 14, int delete(node * head, int i) { node * current; current=head; whi
int delete(node* head, int i)
因此,与其他线程建议的操作不同,我不能在参数中返回节点或使用**节点。在删除之前和之后打印集合将输出0,而不是第一个节点:
//before
12, 1, 14,
//after
0, 1, 14,
int delete(node * head, int i) {
node * current;
current=head;
while (current){
if((current=head) && (head->value=i)){
head=current->next;
free(current);
current=NULL;
break;
}
...
}
return 0;
}
该函数被设计为删除任何节点,但我仍然停留在头的值等于I的部分。下面是函数delete
中的一段代码,该函数处理第一个节点:
//before
12, 1, 14,
//after
0, 1, 14,
int delete(node * head, int i) {
node * current;
current=head;
while (current){
if((current=head) && (head->value=i)){
head=current->next;
free(current);
current=NULL;
break;
}
...
}
return 0;
}
提前谢谢 存储第二个节点的值,然后删除第二个节点,而不是从链表中删除第一个节点 然后简单地将第二个节点的存储值复制到第一个节点中。还有,你可以走了 例如: 初始列表-12、1、14 存储
1
并删除第二个节点,使其成为:
12、14
现在将1
复制到第一个节点中
1,14
因此,有效地删除了链表的第一个节点。如果
无法返回节点或使用**node
,您希望如何更改head的值?我最初的想法是一样的。不幸的是,我的任务限制了我使用该函数。@Kunal:提示:删除第二个节点…@OliCharlesworth如果只有一个节点怎么办?@zubergu:那你就有问题了;)绝对没有想到。我会试试,让你知道:)谢谢!太棒了,成功了!我很快就会发布我的最终答案。多谢各位@如果列表中只有一个节点怎么办?