【发布时间】:2020-08-22 20:49:22
【问题描述】:
你能帮我理解为什么这个函数不会删除链表中的特定元素吗?我做错了什么?
typedef struct str_node{
int data;
struct str_node *next;
}node;
...
node *head;
head = malloc(sizeof(node));
...
void delete_spec(node *a){
int num;
node *tmp;
tmp = a;
printf("Insert number to eliminate: ");
scanf("%d",&num);
while(tmp!=NULL){
if(tmp->data == num){
tmp = tmp->next->next;
}
tmp = tmp->next;
}
}
【问题讨论】:
-
请说明您是否尝试删除特殊情况,例如列表中的第一个或最后一个。
-
试试这个方法分析指针问题stackoverflow.com/questions/59097696/…
-
@Boninissimo 提供的除结构定义外的代码没有意义。
-
@Boninissimo 不要编辑代码,因为它会使原始问题无效。此外,它仍然在您编辑的行之后的行上使用
tmp->next->next。
标签: c struct linked-list singly-linked-list function-definition