#include<stdlib.h>
#include<stdio.h>
#define Maxsize 20
void menu(){
printf("------------------------\n");
printf("输入0初始化线性表:\n");
printf("输入1给线性表赋值:\n");
printf("输入2输出线性表元素:\n");
printf("输入3查询线性表某一元素:\n");
printf("输入4插入元素至线性表:\n");
printf("输入5删除线性表中某一元素:\n");
printf("输入6清空线性表:\n");
printf("输入7输出线性表表长:\n");
printf("输入8退出菜单:\n");
}
typedef int tt;
typedef struct
{ tt data[Maxsize];
int length;
}SqList;
SqList a;
void jian(SqList &a)
{ int x;
do { printf("输入线性表长度:\n");
scanf("%d",&x);
}while(x>=19&&x<0);
a.length = x;
for(int i=0;i<a.length;i++)
{ printf("输入线性表中第%d个元素:\n",i+1);
scanf("%d",&a.data[i]);
}
}
void DisList(SqList a)
{
int i;
for(i=0;i<a.length;i++)
printf("%4d",a.data[i]);
printf("\n");
}
int InsElem(SqList &a,int i,int x)
{
int j;
printf("请输入要插入的元素:\n");
scanf("%d",&x);
printf("请输入要插入的位置:\n");
scanf("%d",&i);
if(i<1||i>a.length+1)
return 0;
for(j=a.length;j>i;j--)
a.data[j]=a.data[j-1];
a.data[i]=x;
a.length++;
return 1;
}
int DelEiem(SqList &a,int i)
{ int j;
//if(isEmpty(a))
//{
// printf("表空\n");
// return 0;
//}
printf("请输入要删除的元素的位置:\n");
scanf("%d",&i);
if(i<1||i>a.length)
return 0;
for(j=i;j<a.length;j++)
a.data[j-1]=a.data[j];
a.length--;
return 1;
}
int GetElem(SqList a,int i,tt &e)
{
printf("请输入要查找元素的位置:\n");
scanf("%d",&i);
if(i<1||i>a.length)
return 0;
else
{ e = a.data[i-1];
printf("%d\n",e);
return 1;
}
}
void DestoryList(SqList a)
{
printf("表已清空\n");
}
void IntList(SqList &a)
{ a.length = 0;
printf("初始化完成\n");
}
int GetLength(SqList &a)
{ return a.length;
}
int isEmpty(SqList &a)
{
return(a.length==0)?1:0;
}
int isFull(SqList &a)
{
return(a.length==20)?1:0;
}
main()
{ int b; int x,i,e;
SqList a;
do
{ menu();
printf("请输入命令序号:\n");
scanf("%d",&b);
if(b==0) IntList(a);
else if(b==1) jian(a);
else if(b==2) DisList(a);
else if(b==3) GetElem(a,i,e);
else if(b==4) InsElem(a,i,x);
else if(b==5)DelEiem(a,i);
else if(b==6)DestoryList(a);
else if(b==7) printf("%d\n",GetLength(a));
}while(b!=8);
}