#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<cstdlib>
#define MAX 100
int num;
using namespace std;
struct node
{
int d[MAX],len;
};
void init(struct node *st)
{
for(int i=0; i<MAX; i++)
{
st->d[i]=0;
}
st->len=0;
}
void Insert(struct node *st,int k,int pos)
{
for(int i=st->len; i>=pos; i--)
{
st->d[i+1]=st->d[i];
}
st->d[pos-1]=k;
st->len++;
}
void disply(struct node *st)
{
for(int i=0; i<st->len; i++)
{
printf("%d ",st->d[i]);
}
printf("\n");
}
void dele(struct node *st)
{
printf("请输入删除第几个位置的数字:\n");
int pos;
cin>>pos;
for(int i=pos; i<st->len; i++)
{
st->d[i-1]=st->d[i];
}
st->len--;
}
void dele2(struct node *st)
{
int m;
cin>>m;
for(int i=0; i<st->len; i++)
{
if(m==st->d[i])
{
for(int j=i; j<st->len; j++)
{
st->d[j]=st->d[j+1];
}
st->len--;
}
}
}
void pf()
{
printf("0.查看顺序表。\n");
printf("1.空顺序表的插入。\n");
printf("2.插入指定位置的数值放入顺序表中。\n");
printf("3.删除指定位置上的数值。\n");
printf("4.删除指定的数值。\n");
printf("5.退出操作。\n");
printf("请输入您要进行的操作:\n");
cin>>num;
}
void is(struct node *st,int k)
{
for(int i=0;i<st->len;i++)
{
if((k-1)==i)
{
for(int j=st->len;j>=i;j--)
{
st->d[j+1]=st->d[j];
}
st->d[i]=k;
}
}
st->len++;
}
int main()
{
int n,m,i;
struct node st;
init(&st);
pf();
while(1)
{
if(num==0)
{
disply(&st);
}
if(num==1)
{
printf("请输入顺序表的长度:\n");
cin>>n;
for(i=1; i<=n; i++)
{
cin>>m;
Insert(&st,m,i);
}
}
else if(num==2)
{
printf("请输入两个相邻的位置:\n");
int k1,k2;
cin>>k1>>k2;
is(&st,k1,k2);
}
else if(num==3)
{
dele(&st);
}
else if(num==4)
{
dele2(&st);
}
else if(num==5)
{
return 0;
}
pf();
}
return 0;
}