谁来帮我看一下:我写的链表节点删除函数错在哪里
#include"stdio.h"#include"conio.h"
#include"stdlib"
struct node
{
char text[10];
int i;
struct node *next;
};
typedef node node;
node *head;
node *CreatLink();
void PrintLink(node *head);
void InsNode(node *head,int i);
void Insert(node *ptr1,node *ptr2,node *ins);
void DelNode(node *head,int i);
void DelLink(node *head);
void main()
{
char menu=0;
int i=0;
printf("\n菜单:N--新建 P--输出 I--插入 D--删除 E--退出\n\n");
while(1)
{
case 'N':head=CreatLink();break;
case 'P':PrintLink(head);break;
case 'I':printf("请输入被插入节点的序号:");
scanf("%d",&i);
InsNode(head,i);
break;
case 'D':printf("请输入要删除节点的序号:");
scanf("%d",&i);
DelNode(head,i);
break;
case 'E':DelLink(head);
printf("数据已经删除!");
goto Loop;
}
Loop:;
}
node *CreatLink()
{
node *head;
int i=0;
printf("请输入新节点序号:");
scanf("%d",i);
if(i==-1)
{
return(NULL);
}
else
{
printf("请输入新节点数据信息:");
scanf("%s",head->text);
head->i=i;
head->next=CreatLink();
return(head);
}
}
void PrintLink(node *head)
{
if(head!=NULL)
{
printf("%02d %s->",head->i,head->text);
PrintLink(head->next);
}
}
void InsNode(node *head,int i)
{
node *ins;
if(head->next!=NULL)
{
if(head->next->i==i)
{
ins=(node *)malloc(sizeof(node));
printf("请输入插入节点信息:");
scanf("%s",ins->text);
ins->i=i+10; //为了调试容易通过
Insert(head,head->next,ins);
head=head->next;
}
InsNode(head->next,i);
}
}
void Insert(node *ptr1,node *ptr2,node *ins)
{
ptr1->next=ins;
ins->next=ptr2;
}
void DelNode(node *head,int i) //这个函数通不过,电脑有爆鸣声
{
node *del;
if(head!=NULL)
{
if(head->i==i)
{
del=head;
head=head->next;
free(del);
}
DelNode(head->next,i);
}
}
void DelLink(node *head)
{
if(head!=NULL)
{
DelLink(head->next);
free(head);
}
}
这是我今天写的程序,那个节点删除的函数有问题,望高手指点,谢谢!
[此贴子已经被作者于2020-3-30 16:04编辑过]