永发信息网

C语言线性表问题(哪个帮我调试下咯)

答案:1  悬赏:0  手机版
解决时间 2021-04-24 01:29

#include "stdio.h"
#include "stdlib.h"

typedef struct node
{ int data;
struct node *next;
}LNode,*LinkList;

LinkList Creat_LinkList()
{ int x;
LinkList H=(LinkList)malloc(sizeof(LNode));
H->next=NULL;
LNode *s ;
scanf("%d",&x);
while(x!=-1)
{ s=(LinkList)malloc(sizeof(LNode));
s->data=x;
s->next=H->next;
H->next=s;
scanf("%d",&x);
}
return H;
}

LinkList Get_LinkList(LinkList H,int k)
{ LNode *p=H;
int j=0;
while(p->next!=NULL&&j<k)
{ p=p->next; j++; }
if(j==k) return p;
else return NULL;
}

Insert_LinkList(LinkList H,int i, int x)
{ LNode *p,*s;
p=Get_LinkList(H,i-1);
if (p==NULL)
{ printf("插入位置错误~!"); }
else
{ s=(LinkList)malloc(sizeof(LNode));
s->data=x;
s->next=p->next;
p->next=s;

}
}

Del_LinkList(LinkList H,int i)
{ LinkList p,q;
p=Get_LinkList(H,i-1);
if(p==NULL)
{ printf("第i-1个节点不存在"); }
else
{ if(p->next==NULL)
{ printf("第i个节点不存在"); }
else
{q=p->next;
p->next=q->next;
free(q);
}
}
}


void Print_LinkList(LNode *L)
{ int i;
printf("线性表是:");
for( ;L->next!=NULL; )
{ printf("%d",L->data); L=L->next; }
}


void main()
{ int j=-1,i;
int x;
LNode *H;
H=Creat_LinkList( );
Print_LinkList(H);
while(j)
{ printf(" 请选择你的操作:");
printf("1:插入操作");
printf("2:删除操作");
printf("0:退出");
scanf("%d",&j);
switch(j)
{ case 0 : printf("没有操作,退出"); break;
case 1 : printf("请输入你要插入的数和位置:");
scanf("%d%d",&x,&i);
Insert_LinkList(H,i,x);
Print_LinkList(H);
break;
case 2 : printf("请输入你要删除的数的位置:");
scanf("%d",&i);
Del_LinkList(H, i);
Print_LinkList(H);
break;
default : printf("选择错误~!");
}
}
}

最佳答案

调好了,你试试

#include "stdio.h"
#include "stdlib.h"

typedef struct node
{ int data;
struct node *next;
}LNode,*LinkList;

LinkList Creat_LinkList()
{ int x;
LinkList H=(LinkList)malloc(sizeof(LNode));
H->next=NULL;
LNode *s ;
scanf("%d",&x);
while(x!=-1)
{ s=(LinkList)malloc(sizeof(LNode));
s->data=x;
s->next=H->next;
H->next=s;
scanf("%d",&x);
}
return H;
}

LinkList Get_LinkList(LinkList H,int k)
{ LNode *p=H;
int j=0;
while(p->next!=NULL&&j<k)
{ p=p->next; j++; }
if(j==k) return p;
else return NULL;
}

void Insert_LinkList(LinkList H,int i, int x)
{ LNode *p,*s;
p=Get_LinkList(H,i-1);
if (p==NULL)
{ printf("插入位置错误~!"); }
else
{ s=(LinkList)malloc(sizeof(LNode));
s->data=x;
s->next=p->next;
p->next=s;

}
}


void Del_LinkList(LinkList H,int i)
{ LinkList p,q;
p=Get_LinkList(H,i-1);
if(p==NULL)
{ printf("第i-1个节点不存在"); }
else
{ if(p->next==NULL)
{ printf("第i个节点不存在"); }
else
{q=p->next;
p->next=q->next;
free(q);
}
}
}


void Print_LinkList(LNode *L)
{ int i;
printf("线性表是:");
for( ;L!=NULL; )
{ printf("%d",L->data); L=L->next; }
}


void main()
{ int j=-1,i;
int x;
LNode *H;
H=Creat_LinkList( );
Print_LinkList(H->next);
while(j)
{ printf(" 请选择你的操作:");
printf("1:插入操作");
printf("2:删除操作");
printf("0:退出");
scanf("%d",&j);
switch(j)
{ case 0 : printf("没有操作,退出"); break;
case 1 : printf("请输入你要插入的数和位置:");
scanf("%d%d",&x,&i);
Insert_LinkList(H,i,x);
Print_LinkList(H->next);
break;
case 2 : printf("请输入你要删除的数的位置:");
scanf("%d",&i);
Del_LinkList(H, i);
Print_LinkList(H->next);
break;
default : printf("选择错误~!");
}
}
}

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
一天坐12个小时,晚上腿就变的结实,而且看起
谁能帮我找出仙剑奇侠传3里面溪风(宋洋)被
写蓝色妖姬的优美句子,急求带蓝色妖姬的伤感
为什么他最后还是选择了背叛?
求付辛博在快乐大本营唱的一首歌
汽车保养应注意什么
推荐一些好玩的游戏
今年骑士会拿总冠军吗?
QQ图标共有多少个
QQ拍拍批量付款功能,一次的上限是多少笔订
【奋斗】中华子开的那辆旧吉普叫什么名字,品
为什么人都那么的虚伪
饭店单位机构是什么,餐饮业的服务员属于什么
怎样才能使头发变的有水分不干枯呢?
WOW工程300到375省钱冲法?
推荐资讯
什么是血热型月经不调,月经不调的主要病因有
达芙妮揭阳专卖店电话号码
梦幻西游为什么生日快乐不会鬼而兰亭序会鬼?
香港3线插头转换器武汉哪有卖的
哪种无线上网卡好?
索爱w580c
信达电器维修地址有知道的么?有点事想过去
猪八戒身份认证
加拿大的留学申请好办吗?要提前多久办申请?
大风歌诗歌形式,诗歌按作品语言的音韵格律和
怀孕五个多月了,有点贫血喝益气养血口服液好
我们约会吧
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?