//递归实现删除单链表L中值为X的结点
#define _CRT_SECURE_NO_WARNINGS
#include
#include
typedef struct Lnode {
int data;
struct Lnode* next;
}lnode,*Linklist;
Linklist list_HeadInsert(Linklist& L) {//头查法建立单链表
Lnode* s; int x;
//L = (Linklist)malloc(sizeof(Lnode));
//L->next = NULL;
printf("请依次输入元素,以“9999”结束\n");
scanf("%d", &x);
while (x != 9999)
{
s = (Lnode*)malloc(sizeof(Lnode));
s->data = x;
s->next = L;
L = s;
scanf("%d", &x);
}
return L;
}
void Del(Linklist& L, int x)
{
Lnode* p;
if (L == NULL)
return;
if (L->data == x)
{
p = L;
L = L->next;
free(p);
Del(L, x);
}
else
Del(L, x);
}
int main()
{
Linklist L;
list_HeadInsert(L);
printf("请输入要删除的元素值\n");
int num;
scanf("%d", &num);
Del(L, num);
Lnode* p = L->next; //开始打印,工作指针用于打印
while (p != NULL)
{
printf("%d ", p->data); //打印结果
p = p->next; //更新P指针
}
return 0;
system("pause");
}
![img](
运行之后输入数字就发生以上的错误,想着知道怎么解决