问题遇到的现象和发生背景
用递归算法删除不带头结点的单链表中值为x的数
用代码块功能插入代码,请勿粘贴截图
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
typedef struct lnode
{
int data;
struct lnode *next;
}linknode;
linknode*Create(linknode*l,int n)
{
int i;
l=(linknode*)malloc(sizeof(lnode));
scanf("%d",&l->data);
l->next=NULL;
linknode*r=l;//注意出现断链的情况,伪代码可以出现,但在写入程序执行时,必须避免断链情况的发生//
for(i=1;i<n;i++)
{
linknode*p=(linknode*)malloc(sizeof(lnode));
scanf("%d",&p->data);
p->next=NULL;
r->next=p;
r=p;
}
return l;
}
linknode*Del_x(linknode*l,int x)
{
linknode*p;
if(l==NULL) return l;
if(l->data==x)
{
p=l;
l=l->next;
free(p);
Del_x(l,x);
}
else
{
l=l->next;
Del_x(l,x);
}
}
void Print(linknode*l)
{
linknode*p=l;
while(p!=NULL)
{
printf("%d\t",p->data);
p=p->next;
}
}
int main()
{
linknode*L;
int n,x;
scanf("%d",&n);
L=Create(L,n);
scanf("%d",&x);
Del_x(L,x);
Print(L);
}
运行结果及报错内容
我的解答思路和尝试过的方法
这是怎么回事,为什么运行出来这么多