1 #include<iostream>
2 using namespace std;
3 #define MAXSIZE 100
4 #define OK 1
5 #define ERROR 0
6 typedef int status;
7 typedef struct
8 {
9 int a;
10 }pta;
11 typedef struct{
12 pta *elem;
13 int length;
14 }SqList;
15 status IniList(SqList &L)//构造空顺序表
16 {
17 L.elem=new pta[MAXSIZE];
18 if(!L.elem)return ERROR;
19 L.length=0;
20 return OK;
21 }
22 status GetElem(SqList L,int i,pta &e)//获取
23 {
24 if(i<1||i>L.length)
25 return ERROR;
26 e=L.elem[i-1];
27 return OK;
28 }
29 int LocateElem(SqList L,pta e)//查找
30 {
31 for(int i=0;i<L.length;i++)
32 if(L.elem[i].a==e.a)
33 return i+1;
34 return 0;
35 }
36 status ListInsert(SqList &L,int i,pta e)//插入
37 {
38 if((i<1)||(i>L.length+1))return ERROR;
39 if(L.length==MAXSIZE)return ERROR;
40 for(int j=L.length-1;j>=i-1;j--)
41 L.elem[j+1]=L.elem[j];
42 L.elem[i-1]=e;
43 ++L.length;
44 return OK;
45 }
46 status ListDelete(SqList &L,int i)//删除
47 {
48 if((i<1)||(i>L.length))return ERROR;
49 for(int j=i;j<=L.length-1;j++)
50 L.elem[j-1]=L.elem[j];
51 --L.length;
52 return OK;
53 }
54 void display(SqList &L)
55 {
56 for(int i=0;i<L.length;i++)
57 cout<<L.elem[i].a<<endl;
58 }
59 int main()
60 {
61 int i;
62 SqList L;
63 IniList(L);
64 int mount;
65 pta e;
66 for(;;)
67 {
68 cout<<"遍历0,查询请输入1,查找输入2,插入输入3,删除输入4,退出输入5"<<endl;
69 cin>>mount;
70 if(mount==5)
71 return 0;
72 switch(mount)
73 {
74 case 0:
75 display(L);break;
76 case 1:
77 cout<<"请输入你想获取第几个的数据"<<endl;
78 cin>>i;
79 GetElem(L,i,e);
80 cout<<"其数据为:"<<e.a;break;
81 case 2:
82 cout<<"请输入你想查找的数据"<<endl;
83 cin>>e.a;
84 if(LocateElem(L,e)!=0)
85 {
86 cout<<"该数在第"<<LocateElem(L,e)<<"个"<<endl;
87 }
88 break;
89 case 3:
90 cout<<"请输入你想要插入到第几个位置"<<endl;
91 cin>>i;
92 cout<<"输入插入的数值为:";
93 cin>>e.a;
94 ListInsert(L,i,e);
95 break;
96
97 case 4:
98 cout<<"请输入你想删除第几个数据"<<endl;
99 cin>>i;
100 ListDelete(L,i);
101 break;
102 }
103
104 }
105 }