#include<stdio.h>
#define MaxSize 100
int a[100000],n,y,x;
char c;
typedef struct {
int data[MaxSize];
int length;
} SeqList;
int CreatList(SeqList *L,int a[],int n) {
if(n>MaxSize) {
printf("顺序表空间不狗,无法建立顺序表\n");
return 0;
}
for(int i=0; i<n; i++) {
L->data[i]=a[i];
}
L->length=n;
return 1;
}
int Insert(SeqList *L,int i,int x) {
if(L->length>=MaxSize) {
printf("上溢错误,插入失败\n ");
return 0;
}
if(i<1||i>L->length+1) {
printf("位置错误,插入失败\n");
return 0;
}
for(int j=L->length; j>=i; j--) {
L->data[j]=L->data[j-1];
}
L->data[i-1]=x;
L->length++;
return 1;
}
int Delete(SeqList *L,int i,int *ptr) {
if(L->length==0) {
printf("下溢错误,删除失败\n");
return 0;
}
if(i<1||i>L->length) {
printf("位置错误,删除失败\n");
return 0;
}
*ptr=L->data[i-1];
for(int j=i; j<L->length; j++) {
L->data[j-1]=L->data[j];
}
L->length--;
return 1;
}
int chaxun(SeqList *L,int e){
int i,lj=0;
for(i=0; i<L->length; i++) {
if(L->data[i]==e) {
lj=i+1;break;
}
}
if(lj!=0) return lj;
else return 0;
}
int main(){
scanf("%d",&n);
for(int i=0; i<n; i++) scanf("%d",&a[i]);
SeqList L;
CreatList(&L,a,n);
printf("创建后输出顺序表\n");
for(int i=0; i<L.length; i++){
printf("%d ",L.data[i]);
}
printf("\n");
while(~scanf("%c",&c)){
if(c=='I'){
scanf("%d%d",&x,&y);
Insert(&L,x,y);
printf("插入后输出顺序表\n");
for(int i=0; i<L.length; i++) {
printf("%d ",L.data[i]);
}
printf("\n");
}
else if(c=='D'){
scanf("%d",&x);
int e;
Delete(&L,x,&e);
printf("删除后输出顺序表\n");
for(int i=0; i<L.length; i++){
printf("%d ",L.data[i]);
}
printf("\n");
printf("%d\n",e);
}
else if(c=='C'){
scanf("%d",&x);
int te=chaxun(&L,x);
printf("%d\n",te);
}
}
return 0;
}
2021-10-08
最新推荐文章于 2021-10-08 15:16:36 发布