<span style="font-size:18px;">#include <stdio.h> #include <stdlib.h> #define M 100 int flag=0; typedef struct Seqlist { int elem[M]; int length; }Seqlist; void menu() { printf(" 顺序表的基本操作实验 "); printf("***************************************** "); printf("*请选择命令序号(0——7): * "); printf("*1 创建顺序表; * "); printf("*2 顺序表插入; * "); printf("*3 顺序表删除; * "); printf("*4 顺序表长度; * "); printf("*5 顺序表是否为空; * "); printf("*6 顺序表查找; * "); printf("*7 顺序表输出; * "); printf("*0 程序退出; * "); printf("***************************************** "); } void Initlist(Seqlist *l) { (*l).length=0; } int Creatlist(Seqlist *l) { int i,n=0; if(l->length>0) { printf("线性表已经存在,不需要再创建! "); return 0; } printf("请输入线性表的长度: "); while(n<1||n>M) scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&l->elem[i]); l->length=n; flag=1; return 1; } int Insertlist(Seqlist *l,int i,int e) { int k; if(l->length>=M) printf("空间不足,请补充空间! "); else if(i>l->length) printf("插入位置有误! "); else { for(k=l->length-1;k>i-1;k--) l->elem[k+1]=l->elem[k]; l->elem[k]=e; l->length++; printf("插入顺序表成功! "); } return 1; } int Dellist(Seqlist *l,int i) { int k; if(l->length<i) printf("无法进行删除操作! "); else { for(k=i-1;k<l->length-1;k++) l->elem[k]=l->elem[k+1]; l->length--; printf("删除成功! "); } return 1; } int Lengthlist(Seqlist l) { if(flag==0) { printf("此表未创建,因此没有长度! "); return 0; } else { printf("顺序表的长度为:%d ",l.length); return 1; } } void Emptylist(Seqlist l) { if(flag==0) printf("顺序表未创建,不能判断是否为空表! "); else { if(l.length==0) printf("顺序表为空表! "); else printf("顺序表不是空表! "); } } void Findlist(Seqlist l,int e) { int i=0; while((l.elem[i++]!=e)&&(i<l.length)); if(i==l.length) printf("顺序表中不存在这个元素! "); else printf("所查找的元素在顺序表中的第%d个 ",i); } void Displaylist(Seqlist l) { int i; if(flag==0) printf("顺序表未创建,无法输出! "); else if(l.length==0) printf("顺序表为空! "); else { for(i=0;i<l.length;i++) { printf("%d ",l.elem[i]); if(i==5) printf(" "); } printf(" "); } } int main() { Seqlist l; int i,select,e; Initlist(&l); while(1) { menu(); printf("请输入命令号:(0——7): "); scanf("%d",&select); switch(select) { case 1: Creatlist(&l); break; case 2: if(flag==0) printf("顺序表未创建,不能插入! "); else { printf("请输入要插入的位置: "); scanf("%d",&i); printf("请输入要插入的数据: "); scanf("%d",&e); Insertlist(&l,i,e); } break; case 3: if(flag==0) printf("顺序表未创建,不能删除! "); else { printf("请输入要删除的位置: "); scanf("%d",&i); Dellist(&l,i); } break; case 4: Lengthlist(l);break; case 5: Emptylist(l);break; case 6: if(flag==0) printf("顺序表未创建,不能进行查找! "); else { printf("请输入要查找的元素值: "); scanf("%d",&e); Findlist(l,e); } break; case 7: Displaylist(l);break; case 0: exit(1);break; default : printf("输入命令有错!请重新输入: "); break; } } return 0; }</span>