#include <cstdio>
#include <cstring>
using namespace std;
#define maxlen 1000
typedef struct{
int data[maxlen];
int last;
}SequenList;
void SqLsetnull(SequenList *L){
L->last=-1;
}
int SqLlen(SequenList *L){
return (L->last+1);
}
bool SqLfull(SequenList *L){
if(L->last+1==maxlen)
return true;
else
return false;
}
void SqLinsert(SequenList *L,int i,int x){
if(SqLfull(L)==true){
printf("overflow");
}
else if( (i < 1) || (i > L->last+2) ){
printf("error");
}
else{
for(int j=L->last;j>=i+1;j--)
L->data[j+1]=L->data[j];//move
L->data[i-1]=x; //insert in data[i]
L->last=L->last+1;
}
}
void SqLdelete(SequenList *L,int i){
if(L->last<0){
printf("SqlEmpty");
}
else if((i<1)||(i>L->last+2)){
printf("error");
}
else{
for(int j=i;j<=L->last+1;j++)
L->data[j-1]=L->data[j];
L->last--;
}
}
void SqLprint(SequenList *L){
printf("现有顺序表中的元素:");
for(int i=0;i<=L->last;i++){
printf("%d ",L->data[i]);
}
printf("\n");
}
int main(){
SequenList x,*L;
L=&x;
SqLsetnull(L);
int nElement;
int nNumber;
printf("请输入顺序表元素的个数:");
scanf("%d",&nElement);
printf("依次输入各元素:");
for(int i=0;i<nElement;i++){
scanf("%d",&nNumber);
SqLinsert(L,i+1,nNumber);
}
SqLprint(L);
int nDelete;
int nDeleteNumber;
printf("请输入要删除的元素个数(小于%d):",nElement);
scanf("%d",&nDelete);
printf("依次要删除元素的位置(从大到小):");
for(int i=0;i<nDelete;i++){
scanf("%d",&nDeleteNumber);
SqLdelete(L,nDeleteNumber);
}
SqLprint(L);
}