1 #include <iostream> 2 3 using namespace std; 4 5 #define maxSize 20 6 typedef struct 7 { 8 int data[maxSize]; 9 int length; 10 }Sqlist; 11 12 void InitList(Sqlist &L) 13 {//初始化 14 L.length=0; 15 } 16 17 int GetElem(Sqlist L,int p,int &e) 18 {//查找指定位置的元素 19 if(p<1||p>L.length) 20 return 0; 21 e=L.data[p]; 22 return 1; 23 } 24 25 int LocateElem(Sqlist L,int e) 26 { 27 int i; 28 for(i=1;i<=L.length;++i) 29 if(e==L.data[i]) 30 return i; 31 return 0; 32 } 33 34 int Insert(Sqlist &L,int p,int e) 35 { 36 int i; 37 if(p<1||p>L.length+1||L.length==maxSize-1) 38 return 0; 39 for(i=L.length;i>=p;--i) 40 L.data[i+1]=L.data[i]; 41 L.data[p]=e; 42 ++(L.length); 43 return 1; 44 } 45 46 int Delete(Sqlist &L,int p,int &e) 47 { 48 int i; 49 if(p<1||p>L.length) 50 return 0; 51 e=L.data[p]; 52 for(i=p;i<L.length;++i) 53 L.data[i]=L.data[i+1]; 54 --(L.length); 55 return 1; 56 } 57 58 void Print(Sqlist L) 59 { 60 if(L.length<1) 61 cout<<"顺序表中没有元素!"<<endl; 62 else 63 { 64 for(int i=1;i<=L.length;++i) 65 cout<<" "<<i<<" "; 66 } 67 return; 68 } 69 70 /* 71 int LocateElem(Sqlist L,int x) 72 {//返回第一个比x大的元素的位置 73 int i; 74 for(i=1;i<=L.length;++i) 75 if(x<L.data[i]) 76 { 77 return i; 78 } 79 return i;//失败则返回指示表尾 80 }*/ 81 82 //顺序表的相关操作 83 int main() 84 { 85 int e,p; 86 int x=7; 87 Sqlist L; 88 InitList(L); 89 for(int i=1;i<10;++i) 90 Insert(L,i,i); 91 Print(L); 92 cout<<" -----------------------------"<<endl; 93 Delete(L,4,e); 94 cout<<" 要删除的第4个位置元素为:"<<e<<endl; 95 Print(L); 96 cout<<" -----------------------------"<<endl; 97 p=LocateElem(L,x); 98 cout<<" 元素7的位置为:"<<p<<endl; 99 cout<<" -----------------------------"<<endl; 100 101 GetElem(L,3,e); 102 cout<<" 第3个位置的元素为:"<<e<<endl; 103 cout<<" -----------------------------"<<endl; 104 return 0; 105 }