# include
# include
using namespace std;
# define Max 50
typedef int DataType;
typedef struct
{
DataType
list[Max];
int size;
}SeqList;
void ListInitiate(SeqList *L)
{
L->size=0;
}
int ListLength(SeqList *L)
{
return L->size;
}
int ListGet(SeqList *L,int i,int *x)
{
if(i<0||i>L->size)
{
cout<
illegal"<
return 0;
}
*x=L->list[i];
return 0;
}
int ListInsert(SeqList *L,int i,int x) //插入函数按下标
{
int j;
if(i<0||i>L->size)
{
cout<
illegal."<
return 0;
}
for(j=L->size;j>i;j--)
{
L->list[j]=L->list[j-1];
}
L->list[i]=x;
(L->size)++;
j=0;
return 1;
}
int ListDelete(SeqList *L,int i,int *x)
//按下标删除
{
if(L->size<=0)
{
cout<
execute."<
return 0;
}
if(i<0||i>L->size)
{
cout<
illegal."<
return 0;
}
*x=L->list[i];
cout<list[i]<
deleted."<
int j;
for(j=i+1;jsize;j++)
{
L->list[j-1]=L->list[j];
}
(L->size)--;
cout<
return 1;
}
int ListDeleteMore(SeqList *L,int x) //按值删除
{
cout<
beginning....."<
DataType *Li=L->list;
DataType *Lii=(Li+(L->size-1));
DataType *Liii=(Li+(L->size-2));
int j,k=0;
if(L->size>Max||L->size<=0)
{
cout<
operation of inserting"<
return 0;
}
else
{
for(j=0;jsize;Li++,j++)
{
if(*Li==x)
{
k=x;
while(Liii!=Li)
{
Lii--;
Liii--;
}
*Liii=*Lii;
while(*Lii==x)
{
Lii++;
*Liii=*Lii;
(L->size)--;
}
while(*Lii!=L->list[L->size-1])
{
Lii++;
Liii++;
*Liii=*Lii;
}
if(*Lii==L->list[L->size-1])
{
Lii++;
Liii++;
*Liii=*Lii;
}
(L->size)--;
Lii=((L->list)+(L->size-1));
Liii=((L->list)+(L->size-2));
}
}
}
if(k==0)
cout<
cout<
delteing..."<
Li=NULL;
Lii=NULL;
return 1;
}
int ListInsertAfterX(SeqList *L,int x,int i) //按值插入
{
DataType *Li=L->list;
DataType *Lii=(Li+(L->size));
DataType *Liii=(Li+(L->size-1)); //使用三个指针
int j;
if(L->size>Max||L->size<=0)
{
cout<
operation of inserting"<
return 0;
}
else
{
for(j=0;jsize;Li++,j++)
{
if(*Li==x)
{
while(Liii!=Li)
{
*Lii=*Liii;
Lii--;
Liii--;
}
*Lii=i;
(L->size)++;
Li++;
Lii=((L->list)+(L->size));
Liii=((L->list)+(L->size-1));
}
}
}
cout<
inserting..."<
Lii=NULL;
Liii=NULL;
return 1;
}
void show(SeqList *L)
{
int i;
int x;
for(i=0;isize;i++)
{
ListGet(L,i,&x);
cout<
}
}
void Menu()
{
cout<
cout<
cout<
cout<
cout<
cout<
Execute"<
}
int main()
{
SeqList mylist;
int i,x;
int a[5];
ListInitiate(&mylist);
cout<
liner:"<
for(i=0;i<5;i++)
{
cin>>a[i];
ListInsert(&mylist,i,a[i]);
}
cout<
show(&mylist);
cout<
Menu();
for(;;)
{
cin>>i;
cout<
switch(i)
{
case 1:{cout<
cin>>i>>x;system("clear");
ListInsert(&mylist,i,x);
show(&mylist);break;}
case 2:{cout<
cin>>i>>x;system("clear");
ListInsertAfterX(&mylist,i,x);
show(&mylist);break;}
case 3:{cout<
cin>>i;system("clear");
ListDelete(&mylist,i,&x);
show(&mylist);break;}
case 4:{cout<
cin>>x;system("clear");
ListDeleteMore(&mylist,x);
show(&mylist);break;}
case 5:{cout<
show(&mylist);break;}
default:{exit(0);break;}
}
cout<
Menu();
}
return 0;
}