请看一下,帮我完善一下,谢谢了。
#include<stdio.h>#define MaxSize 20//定义全局变量。
typedef struct//结构体的定义
{
int count[MaxSize];
int listlength;
}SeqList;
void InitList(SeqList *l)//有序列表的初始化。
{
l->listlength=0;
}
void BaoCun(SeqList *l)//向有序列表中输入数据保存并显示。
{
int i=0,j;
printf("向有序列表中输入第一个数据\n");
scanf("%d",&l->count[i]);
printf("继续向有序列表中输入其它的数据,按0结束输入(最多能输入20个数据)\n");
l->listlength++;
while(l->count[i]!=0)
{
i++;
scanf("%d",&l->count[i]);
l->listlength++;
if(l->listlength>MaxSize-1)
{
for(j=0;j<l->listlength;j++)
printf("%d ",l->count[j]);
printf("\n\n");
printf("不能再输入数据\n");
exit(0);
}
}
l->listlength--;
for(j=0;j<l->listlength;j++)
printf("%d ",l->count[j]);
printf("序列表中有%d个元素\n",j);
printf("\n\n");
}
void InsList(SeqList *l,int n,int x)//在某个位置插入数据。
{
int i;
if(n<=l->listlength&&n>0)
{
for(i=l->listlength-1;i>=n-1;i--)
l->count[i+1]=l->count[i];
l->count[n-1]=x;
(l->listlength)++;
}
else
{
printf("输入的数据太大,不能插入,请退出\n\n");
exit(0);
}
}
void print(SeqList *l)//输出序列表中的数据。
{
int i;
printf("输出的数据为:\n");
for(i=0;i<l->listlength;i++)
printf("%d ",l->count[i]);
printf("\n\n");
}
int DelList(SeqList *l,int x)//删除序列表中的数据。
{
int i,t,j;
for(i=0;i<l->listlength;i++)
{
if(x==l->count[i])
{
t=1;
break;
}
}
if(t!=1)
{
printf("输入有误,请重新输入数据:\n\n");
return 1;
}
else
{
for(j=i;j<l->listlength-1;j++)
l->count[j]=l->count[j+1];
(l->listlength)--;
for(i=0;i<l->listlength;i++)
printf("%d ",l->count[i]);
printf("\n\n");
return 0;
}
}
int Locate(SeqList *l,int x)//查询序列表中的数据的位置。
{
int i,t;
for(i=0;i<l->listlength;i++)
{
if(x==l->count[i])
{
t=1;
break;
}
}
if(t!=1)
{
printf("输入错误,请重新输入数据\n\n");
return 1;
}
else
{
printf("你要查询的数据的位置为:%d",i+1);
printf("\n\n");
return 0;
}
}
int ListLength(SeqList *l)//查询序列表的长度。
{
int n;
n=l->listlength;
return n;
}
void main()
{
int x,n,k=1,index;
SeqList list;
InitList(&list);
BaoCun(&list);
printf("请输入要插入的数据的位置及其数据.输入格式为(3,5)\n");
scanf("%d,%d",&n,&x);
InsList(&list,n,x);
print(&list);
while(k)
{
printf("请输入要删除的数据:\n\n");
scanf("%d",&x);
index=DelList(&list,x);
if(index==0)
k=0;
else
k=1;
}
k=1;
while(k)
{
printf("请输入要查询数据:\n\n");
scanf("%d",&x);
index=Locate(&list,x);
if(index==0)
k=0;
else
k=1;
}
system("pause");
printf("\n\n");
k=1;
index=ListLength(&list);
printf("序列表的长度是:%d\n\n",index);
}
这个程序能正确的执行,但是我还有点不满意,那就是在输入0作为结束输入时把0保存进了结构体中的数组,但是我不想把他保存,请各位帮我看下把,给我帮忙改下,谢谢了!!!!!!!!!!!!!!!!