为什么我这个删除单链表中为x的数的代码,没办法删第一个数据啊?
问题描述:
请输入单链表L的数据元素的个数:5
请输入单链表中的数据元素:38243657
输入1为插入操作
输入2为删除操作
输入3为撤销操作
请输入要进行的操作:2
要删除的数据为:24
成功删除!
处理后的单链表中的数据为:383657
Process exited after 16.64seconds with return value 0
青按任意键继续
答
供参考:
int ListDelete(SingleLinkedList **L,ElemType x)
{
SingleLinkedList *p,*pre=NULL;
p = (*L);
if(p == NULL)
{
printf("链表为空,无法进行删除操作!");
return 0;
}
while(p != NULL)
{
if(p->data == x)
{
if(p == (*L)){
(*L) = (*L)->next;
free(p);
}
else{
pre->next = p->next;
free(p);
}
return 1;
}
pre = p;
p = p->next;
}
return 0;
}