1、Status InitList(SqList &L) /初始化一个顺序表 L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType); if(!L.elem) exit(OVERFLOW); L.length=0; L.listsize=LIST_INIT_SIZE; return OK;/InitSqListStatus ListInsert(SqList &L,int i,ElemType e) /在第i个元素前插入一个新的元素 if(i +L.length) return ERROR; if(L.length=L.listsize)
2、 ElemType * newbase=(ElemType *)realloc(L.elem,(LIST_INIT_SIZE+LISTINCREMENT)*sizeof(ElemType);newbase) exit(OVERFLOW); L.elem=newbase; L.listsize=LIST_INIT_SIZE+LISTINCREMENT;/勿忘 for (int j=L.length; j=i; -j)/此处要注意 L.elemj=L.elemj-1; L.elemi-1=e;/ListInsertStatus GetElem(SqList L,int i,ElemType &e)
3、 /返回顺序表中的第i个元素1|iL.length) return ERROR; e=L.elemi-1;/GetElemStatus ListDelete(SqList &L,int i,ElemType & /删除顺序表中的第i个元素 for(i;iL.length;i+) L.elemi-1=L.elemi; -L.length;/ListDeleteStatus PriorElem(SqList L,ElemType cur_e,ElemType &pre_e) /返回一个不是首元素的前驱 int i=2; if(cur_e=L.elem0) return ERROR; while(i
4、=L.length&(L.elemi-1!=cur_e) i+; if(i=L.length+1) return ERROR; else pre_e=L.elemi-2;/PriorElemStatus NextElem(SqList L,ElemType cur_e,ElemType &next_e) /返回一个不是末元素的后继 int i=1;L.length& if(i=L.length) return ERROR; else next_e=L.elemi;/NextElemStatus ListEmpty(SqList L) /判断顺序表是否为空 return L.length = 0
5、;/ListEmptyStatus ListLength(SqList L) /求顺序表的长度 return L.length;/ListLengthStatus DestroyList(SqList & /销毁一个顺序表 if (L.elem) free(L.elem); L.elem=NULL; printf(此顺序表已被销毁。);/DestroyListStatus ClearList(SqList & /清空一个顺序表/ClearListStatus ListPrint(SqList &L)顺序表为: if (ListEmpty(L)空。n return ERROR; for (int
6、 i=0; i +i)%-4d , L.elemi);void main() SqList L; ElemType a,b,c,d,e,f,pre_e,next_e; int i,j,k,l,m, menu; char p,q,r,s; int is_stop_; InitList(L); is_stop_ = FALSE; while (!is_stop_) printf( 1. 添加元素 2. 查看指定位置的元素n 3. 删除元素 4. 查找元素前驱n 5. 查找元素后继 6. 检查是否为空n 7. 列出所有元素 8. 查看列表长度n 9. 清空表 10. 释放列表内存并退出n11. 退出
7、n );请选择,执行以上操作: scanf(%d,&menu); switch (menu)/ 1. 添加元素; case 1:请输入你想创建的顺序表中元素的个数:i);1) printf(您输入的值有误,无法创建顺序表。 else printf(请您依次输入您想创建的顺序表的元素: for(j=1;jj+) a); ListInsert(L,L.length+1,a); ListPrint(L); break;2. 查看指定位置的元素n case 2:请输入您想获取的元素的位序:k); if(GetElem(L,k,b) printf(获得的元素为:%dn,b); else printf(您
8、输入的值有误,无法获取元素。3. 删除元素n case 3:请输入您想删除的元素的位序:l); if(ListDelete(L,l,c)删除的元素为:,c);删除元素后的顺序表为:您输入的值有误,无法删除元素。4. 查找元素前驱n case 4:您想返回那个元素的前驱?d); if(PriorElem(L,d,pre_e) printf(元素%d的前驱为%dn,d,pre_e);您输入的值有误,无法返回前驱。5. 查找元素后继n case 5:您想返回那个元素的后继?e); if(NextElem(L,e,next_e) printf(元素%d的后继为%dn,e,next_e);您输入的值有误,无法返回后继。6. 检查是否为空n case 6: if(ListEmpty(L) printf(此顺序表为空。此顺序表不为空。7. 列出所有元素n case 7: 8. 查看列表长度n case 8:此顺序表的长度为: %dn,ListLength(L); 9. 清空表n case 9: ClearList(L);顺序表已清空。10. 释放列表内存n case 10: DestroyList(L); is_stop_ = TRUE; case 11:
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2