#include<stdio.h>
#define MAX 100
typedef struct{
int data[MAX];
int len;
}sqlist;
void csh(sqlist *L){
L->len=0;
}
void create(sqlist *L,int n){//创表
int i;
printf("请输入%d个整数:",n);
for(i=0;i<n;i++){
scanf("%d",&L->data[i]);
}
L->len=i;
}
int get(sqlist *L,int i,int *x){//取元素
/*取顺序表中第i个元素*/
if(i<1||i>L->len){
printf("请输入1到L->len之间的整数");
return 0;
}
else{
*x=L->data[i-1];
printf("%d",*x);
return 1;
}
}
int dingw(sqlist *L,int x){//找所给元素位置
int i=0;
while(i<L->len&&L->data[i]!=x)
i++;
if(i>=L->len)
return 0;
else
printf("%d位于表中第%d位",x,i+1);
return 0;
}
int cha(sqlist *L,int i,int x){//插入元素
/*将x插到表的第i个位置*/
int j;
if(L->len>=MAX){
printf("顺序表已满,无法进行插入");
return -1;
}
if(i<1||i>L->len+1){
printf("请选择正确的插入位置!");
return 0;
}
if(i==L->len+1){
L->data[i-1]=x;
L->len++;
return 1;
}
for(j=L->len;j>=i;j--){
L->data[j]=L->data[j-1];
}
L->data[i-1]=x;
L->len++;
return 1;
}
int shan(sqlist *L,int i,int *x){//删除元素
/*删除顺序表的第i个元素*/
int j;
if(L->len==0){
printf("顺序表为空,无法进行删除操作!");
return 0;
}
if(i<1||i>L->len){
printf("不存在第%d个元素,请输入正确的参数!",i);
}
*x=L->data[i-1];
for(j=i;j<L->len;j++){
L->data[j-1]=L->data[j];
}
L->len--;
return 1;
}
void shuc(sqlist *L){//输出顺序表的全部元素
int i;
for(i=0;i<L->len;i++){
printf("%d ",L->data[i]);
}
}
void menu(){
printf("请选择你要进行的操作\n");
printf("1 create 2 get 3 dingw\n");
printf("4 cha 5 shan 6 shuc\n") ;
}
int main(){
sqlist L;
int k,x,n,i;
while(1){//死循环调用menu
menu();
scanf("%d",&k);
switch (k) {
case 1:
csh(&L);
printf("请输入你的顺序表元素个数");
scanf("%d",&n);
create(&L,n);
printf("建立的顺序表为:");
shuc(&L);
printf("\n");
break;
case 2:
printf("请问你要找第几个元素:");
scanf("%d",&i);
printf("第%d个元素为:",i);
get(&L,i,&x);
printf("\n");
break;
case 3:
printf("请输入你要查看的元素:");
scanf("%d",&x);
dingw(&L,x);
printf("\n");
break;
case 4:
printf("请分别输入你要插入的位置和元素:");
scanf("%d %d",&i,&x);
cha(&L,i,x);
printf("\n");
break;
case 5:
printf("输入你要删除元素的位置:");
scanf("%d",&i);
shan(&L,i,&x);
printf("\n");
break;
case 6:
printf("当前顺序表为:");
shuc(&L);
printf("\n");
break;
default:
printf("请输入菜单中的号码!");
break;
}
}
return 0;
}