为什么我这个删除单链表中为x的数的代码,没办法删第一个数据啊?

为什么我这个删除单链表中为x的数的代码,没办法删第一个数据啊?

问题描述:

img

img

img

请输入单链表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;
}