74 }
75 for(int i=lt->size; i>=0; --i) 76 { 77 lt->base[i] =lt->base[i-1]; 78 } 79 lt->base[0] = x; 80 lt->size++; 81 return TRUE; 82 } 83 84 bool pop_front(SeqList *lt) 85 { 86 if(IsEmpty(lt)) 87 { 88 cout<<"表为空,删除失败!"<<endl; 89 return FALSE; 90 } 91 for(int i=0; i<lt->size-1; ++i) 92 { 93 lt->base[i] = lt->base[i+1]; 94 } 95 lt->size--; 96 return TRUE; 97 } 98 99 bool push_front(SeqList *lt) 100 { 101 if(IsEmpty(lt)) 102 { 103 cout<<"表为空,删除失败!"<<endl; 104 return FALSE; 105 } 106 lt->size--; 107 return TRUE; 108 } 109 110 bool insert_pos(SeqList *lt,ElemType x,int pos) 111 { 112 if(pos<0 || pos>lt->size) 113 { 114 cout<<"位置不合法!"<<endl; 115 return FALSE; 116 } 117 if(IsFaull(lt)) 118 { 119 cout<<"表已满,不能插入:"<<endl; 120 return FALSE; 121 } 122 for(int i=lt->size; i>pos; --i) 123 { 124 lt->base[i] = lt->base[i-1]; 125 } 126 lt->base[pos] = x; 127 lt->size++; 128 return TRUE; 129 } 130 131 bool insert_val(SeqList *lt,ElemType x) 132 { 133 if(IsFaull(lt)) 134 { 135 cout<<"顺序表已满,插入失败!"<<endl; 136 return FALSE; 137 } 138 int i; 139 for( i=0; i<lt->size-1; ++i) 140 { 141 if(x<lt->base[i]) 142 break; 143 } 144 for(int j=lt->size;j>i;--j) 145 { 146 lt->base[j] = lt->base[j-1]; 147 } 148 lt->base[i] = x; 149 lt->size++; 150 } 151 152 bool erase_pos(SeqList *lt,int pos) 153 { 154 if(IsEmpty(lt)) 155 { 156 cout<<"顺序表为空,不能删除"<<endl; 157 return FALSE; 158 } 159 if(pos<0 || pos>=lt->size) 160 { 161 cout<<"位置非法,不能删除!"<<endl; 162 return FALSE; 163 } 164 for(int i=pos;i<lt->size;i++) 165 { 166 lt->base[i] = lt->base[i+1]; 167 } 168 lt->size--; 169 } 170 171 bool erase_val(SeqList *lt,ElemType x) 172 { 173 if(IsEmpty(lt)) 174 { 175 cout<<"顺序表为空,不能删除!"<<endl; 176 return FALSE; 177 } 178 int pos = find(lt,x); 179 if(pos == -1) 180 { 181 cout<<"要删除的值不存在,不能删除!"<<endl; 182 return FALSE; 183 } 184 erase_pos(lt,pos); 185 186 } 187 188 int find(SeqList *lt,ElemType key) 189 { 190 if(IsEmpty(lt)) 191 { 192 cout<<"顺序表为空,查找失败!"<<endl; 193 194 } 195 for(int i=0;i<lt->size;++i) 196 { 197 if(lt->base[i] == key) 198 return i; 199 } 200 return -1; 201 } 202 size_t length(SeqList *lt) 203 { 204 return lt->size; 205 } 206 207 void clear(SeqList *lt) 208 { 209 lt->size = 0; 210 } 211 void sort(SeqList *lt) 212 { 213 if(IsFaull(lt) || lt->size == 1) 214 return; 215 ElemType temp; 216 for(int i=0; i<lt->size-1; ++i) 217 { 218 for(int j=0; j<lt->size-i; ++j) 219 { 220 if(lt->base[j] >lt-> base[j+1]) 221 { 222 temp = lt->base[j]; 223 lt->base[j] = lt->base[j+1]; 224 lt->base[j+1] = temp; 225 } 226 } 227 } 228 } 229 void reverse(SeqList *lt) 230 { 231 if(IsFaull || lt->size == 1) 232 return ; 233 int low = 0; 234 int high = lt->size-1; 235 ElemType temp; 236 while(low < high) 237 { 238 temp = lt->base[low]; 239 lt->base[low] = lt->base[high]; 240 lt->base[high] = temp; 241 low++; 242 high--; 243 } 244 } /
主函数
1 #include"utili.h" 2 #include"seqlist.h" 3 int main() 4 { 5 ElemType item; 6 int pos,len; 7 8 SeqList mylist; 9 InitList(&mylist); 10 int select = 1; 11 while(select) 12 { 13 cout<<"********************************"<<endl; 14 cout<<"*[1] push_back [2]pop_back*"<<endl; 15 cout<<"*[3] show_list [0] quit *"<<endl; 16 cout<<"*[4] push_front [5] pop_front*"<<endl; 17 cout<<"*[6] insert_pos [7] insert_val"<<endl; 18 cout<<"*[8] erase_pos [9] erase_val*"<<endl; 19 cout<<"*[10] find [11] sort *"<<endl; 20 cout<<"*[12] length [13] clear *"<<endl; 21 cout<<"*[14] reverse *"<<endl; 22 cout<<"********************************"<<endl; 23 cout<<"请选择:>"; 24 cin>>select; 25 switch(select) 26 { 27 case 1: 28 29 cout<<"输入要插入的数据,以-1结束:"; 30 while(cin>>item,item != -1) 31 { 32 push_back(&mylist,item); 33 } 34 break; 35 36 case 2: 37 cout<<"请输入要插入的数据,以-1结尾:"; 38 while(cin>>item,item != -1) 39 { 40 push_pop(&mylist,item); 41 } 42 break; 43 44 case 3: 45 show_list(&mylist); 46 break; 47 48 case 4: 49 break; 50 case 5: 51 pop_front(&mylist); 52 break; 53 54 case 6: 55 cout<<"输入插入的数据:>"; 56 cin>>item; 57 cout<<"输入要插入的位置:"; 58 cin>>pos; 59 insert_pos(&mylist,item,pos); 60 break; 61 case 7: 62 cout<<"输入要插入的数据:>"; 63 cin>>item; 64 insert_val(&mylist,item); 65 break; 66 case 8: 67 cout<<"请输入要删除的位置:>"; 68 cin>>pos; 69 erase_pos(&mylist,pos); 70 break; 71 72 case 9: 73 cout<<"输入要删除的数据:"; 74 cin>>item; 75 erase_val(&mylist,item); 76 break; 77 78 case 10: 79 cout<<"输入要查找的数据:>"; 80 cin>>item; 81 pos = find(&mylist,item); 82 cout<<"pos = "<<pos<<endl; 83 break; 84 case 11: 85 sort(&mylist); 86 break; 87 case 12: 88 len = length(&mylist); 89 cout<<"len = "<<len<<endl; 90 break; 91 case 13: 92 clear(&mylist); 93 break; 94 case 14: 95 reverse(&mylist); 96 break; 97 case 0: 98 break; 99 default: 100 break; 101 } 102 } 103 return 0; 104 }