问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
#include<stdio.h>
#include<stdlib.h>
typedef int Az;
typedef struct man {
int data;
struct man size;
}List;
int main()
{List createList();
struct man createNode();
List find(List l,int x);
List insert(List l,int x,int i);
Az cha(List l,int p);
bool ListDelete_L(List L,int i,int e);
int len(List l);
List k,t;
int e;
int v,m,s,n,h,y,i,f,b;
createList();
k=createNode();
t=k;
printf("你想进行什么操作?");
printf("增输入2,删输入3,检输入4,查输入5,结束输入0");
scanf("%d",&v);
while(v)
{
if(v==2)
{printf("请输入你要插入的数字:");
scanf("%d",&n);
printf("请输入你要插入的位置:");
scanf("%d",&h);
insert(k,n,h);
}
if(v==3)
{printf("请输入你要删除的位置:");
scanf("%d",&y);
for(i=0;i<=y;i++)
t=t->size;
ListDelete_L (k,y,t->data);
}
if(v==4)
{printf("请输入你要查询的数字:");
scanf("%d",&m);
find(k,m);
}
if(v==5)
{printf("请输入你要查询的位置:");
scanf("%d",&m);
cha(k,m) ;
}
printf("请再次输入数字:");
scanf("%d",&v);
for(e=0;e<=99;e++)
{t=k;
printf(" %d",t->data);
t=t->size;
}}
printf("该列表的长度为:%d",len(k));
return 0;
}
List createList()
{struct man headNode;
headNode = (struct man*)malloc(sizeof(struct man));
headNode->size = NULL;
return headNode;
}
struct man* createNode()
{int i;
struct man* newNode = (struct man*)malloc(sizeof(struct man));
for(i=0;i<=99;i++)
{
newNode->data = i;
newNode=newNode->size;
}
newNode->size = NULL;
return newNode;
}
int len(List l)
{
List p;
int cut=0;
p=l;
while(p)
{p=p->size;
cut++;
}
return cut;
}
List find(List l,int x)
{int i;
List p=l;
for(i=0;i<=99;i++)
{
if(p&&p->data!=x) p=p->size;}
if(p) return p;
else return NULL;
}
Az cha(List l,int p)
{List m;
int cnt=1;
m=l;
while(m&&cnt<p){
m=m->size;
cnt++;
}
if((cnt==p)&&m)
return m->data;
else return -1;
}
List insert(List l,int x,int i)
{
List tmp,pre;
tmp=(List)malloc(sizeof(struct man));
tmp->data=x;
if(i==1){
tmp->size=l;
return tmp;
}
else{
int cnt=1;
pre=l;
while(pre&&cnt<i-1)
{
pre=pre->size;
cnt++;
}
if(pre==NULL||cnt!=i-1)
{
printf("插入参数错误");
free(tmp);
return NULL;
}
else {
tmp->size=pre->size;
pre->size=tmp;
return l;
}
}
}
bool ListDelete_L (List L,int i,int e)
{ int j;
List p,q;
p=L ;
j=0;
while (p->size && j<i-1)
{
p=p->size;
j++;
}
if (!(p->size)||j>i-1)
return false;
else {
q=p->size;
e=q->data;
p->size=q->size;
free(q);
return true;
}
}