#include <iostream>
using namespace std;
#define Maxsize 100
typedef struct{
int *elem;
int length;//长度
} SqList;
bool InitList(SqList &L){//构造一个空的顺序表
L.elem=new int[Maxsize];
if(!L.elem){
return false;
}
L.length=0;
return true;
}
bool CreateList(SqList &L){
int a,i=0;
cin>>a;
while(a!=-1){
if(L.length==Maxsize){
cout<<"顺序表满了!";
return false;
}
L.elem[i++]=a;
L.length++;
cin>>a;
}
return true;
}
bool GetElem(SqList L,int i,int &e){
if(i<0|| i>L.length){
return false;
}
e=L.elem[i-1];
}
int LocateElem(SqList L,int x){
for(int i=0;i<L.length;i++){
if(L.elem[i]==x){
return i+1;//返回第5个元素
}
}
return -1;
}
bool ListInsert(SqList &L,int i,int e){
if(i<1||i>L.length+1){
return false;
}
if(L.length==Maxsize){
return false;
}
for(int j=L.length-1;j>=i-1;j--){
L.elem[j+1]=L.elem[j];
}
L.elem[i-1]=e;
L.length++;
return true;
}
void DestroyList(SqList &L)
{
if (L.elem) delete []L.elem; //释放存储空间
}
bool ListDelete(SqList &L ,int i,int &e){
if(i<1||i>L.length){
return false;
}
e=L.elem[i-1];
for(int j=i;j<=L.length-1;j++){
L.elem[j-1]=L.elem[j];
}
L.length--;
return true;
}
void print(SqList L){
cout<<"输出顺序表"<<endl;
for(int i=0;i<=L.length-1;i++){
cout<<L.elem[i]<<" ";
}
cout<<endl;
}
int main(){
SqList myL;
int i,e,x;
cout << "1. 初始化\n";
cout << "2. 创建\n";
cout << "3. 取值\n";
cout << "4. 查找\n";
cout << "5. 插入\n";
cout << "6. 删除\n";
cout << "7. 输出\n";
cout << "8. 销毁\n";
cout << "0. 退出\n";
int choose=-1;
while(choose!= 0)
{
cout<<("请选择:");
cin>>choose;
switch(choose)
{
case 1://初始化顺序表
cout<<"顺序表初始化"<<endl;
if(InitList(myL)) {
cout << "顺序表初始化成功!" << endl;
}
else
cout <<"顺序表初始化失败!"<<endl;
break;
case 2://创建顺序表
cout<<"顺序表创建..."<<endl;
cout<<"输入整型数,输入-1结束"<<endl;
if(CreateList(myL))
cout<<"顺序表创建成功!"<<endl;
else
cout<<"顺序表创建失败!"<<endl;
break;
case 3://取值
cout<<"输入整型数i,取第i个元素输出"<<endl;
cin>>i;
int e;
if((GetElem(myL,i,e))!=-1)
cout<<"第i个元素是"<<e<<endl;
else
cout<<"失败"<<endl;
break;
case 4://查找
cout<<"请输入要查找的数x:"<<endl;
cin>>x;
if(LocateElem(myL,x)==-1)
cout<<"FA"<<endl;
else
cout<<"SU"<<endl;
break;
case 5://插入
cout<<"请输入要插入的位置和要插入的数据元素e:";
cin>>i>>e;
if(ListInsert(myL,i,e))
cout<<"成功!"<<endl;
else
cout<<"失败!"<<endl;
break;
case 6://删除
cout<<"请输入要删除的第i个位置:"<<endl;
cin>>i;
if((ListDelete(myL,i,e))!=-1)
cout<<"SU:"<<endl;
else
cout<<"FA"<<endl;
break;
case 7://输出
print(myL);
break;
}
}
return 0;
}