#include <stdio.h>
#define DATATYPE int
#define MAXSIZE 100
typedef struct
{
DATATYPE DATAS[MAXSIZE];
int last;
}SQLIST;
void creat(SQLIST LST);//创建顺序表;
void ins(SQLIST LST);//插入操作;
void del(SQLIST LST);//删除操作;
void disp(SQLIST LST);//输出操作;
void init_sqlist(SQLIST LST)
{
LST.last=1;
return;
}//初始化顺序表;
main()
{
int i=0;
SQLIST LST[MAXSIZE];
int choose;//进行选择;
char ch;
do
{
printf("--选择操作--\n");
printf("1--创建顺序表\n");
printf("2--插入操作\n");
printf("3--删除操作\n");
printf("选择:");
scanf("%d",&choose);
switch(choose)
{
case 1:creat(SQLIST LST[i]);
disp(SQLIST LST[i]);
break;
case 2:ins(SQLIST LST[i]);
disp(SQLIST LST[i]);
break;
case 3:del(SQLIST LST[i]);
disp(SQLIST LST[i]);
break;
}
printf("是否还要继续操作?\n");
printf("是(Y)/否(N)\n");
ch=getchar();
}while(ch=='Y');
}
void creat(SQLIST LST)
{
int size=1;
char adjust;
printf("--创建顺序表--\n");
loop:
printf("输入第%个元素:",size);
scanf("%d",&LST.datas[size]);
printf("--是否还要继续输入数据?--\n");
printf("--是(Y)/否(N)--\n");
adjust=getchar();
if(adjust=='Y')
{
size++;
LST.last++;
goto loop;
}
else
return;
}
void ins(SQLIST LST)
{
int size;
int data_local;
int data_insert;
char adjust;
printf("--进行插入操作--\n");
loop:
printf("插入的元素:");
scanf("%d",&data_insert);
printf("插入的位置:");
scanf("%d",&data_local);
if(data_local>=MAXSIZE||data_local<=0)
printf("--输入错误,超出数组极限!--");
else
for(size=++LST.last;size>=data_local;size--)
LST.datas[size]=LST.datas[size-1];
LST.datas[data_local]=data_insert;
printf("--是否继续进行插入操作?--\n");
printf("是(Y)/否(N)\n");
adjust=getchar();
if(adjust=='Y')
goto loop;
else
return;
}
void del(SQLIST LST)
{
char adjust;
int size;
int data_del;
printf("--进行删除操作--\n");
loop:
printf("输入要删除元素的位置:");
scanf("%d",&data_del);
for(size=data_del;size<LST.last;size++)
LST.datas[size]=LST.datas[size+1];
LST.last--;
printf("--是否还要继续进行删除操作?--\n");
printf("是(Y)/否(N)");
adjust=getchar();
if(adjust=='Y')
goto loop;
else
return;
}
void disp(SQLIST LST)
{
int size;
printf("--所操作的顺序表--\n");
for(size=1;size<=LST.last;size++)
printf("%d ",LST.datas[size]);
}