数据结构中顺序表的基本操作_第1页
数据结构中顺序表的基本操作_第2页
数据结构中顺序表的基本操作_第3页
数据结构中顺序表的基本操作_第4页
数据结构中顺序表的基本操作_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构中顺序表的基本操作/头文件#include<stdio.h>#include<malloc.h>#include<stdlib.h>函数返回状态代码#defineOK1#defineERROR0#defineTRUE1#defineFALSE0#defineINFEASIBLE-1#defineOVERFLOW-2运用动态分配的顺序存储结构#defineLIST_INIT_SIZE100#defineLISTINCREMENT10typedefintElemType;typedefstructElemType*elem;intlength;intli

2、stsize;SqList;typedefintStatus;StatusInitList(SqList&L)(初始化一个顺序表L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType);if(!L.elem)exit(OVERFLOW);L.length=0;L.listsize=LIST_INIT_SIZE;returnOK;/InitSqListStatusListInsert(SqList&L,inti,ElemTypee)(在第i个元素前插入一个新的元素if(i<1|i>+L.length)return

3、ERROR;if(L.length=L.listsize)(ElemType*newbase=(ElemType*)realloc(L.elem,(LIST_INIT_SIZE+LISTINCREMENT)*sizeof(ElemType);if(!newbase)exit(OVERFLOW);L.elem=newbase;L.listsize=LIST_INIT_SIZE+LISTINCREMENT;/勿忘)for(intj=L.length;j>=i;-j)/此处要注意L.elemj=L.elemj-1;L.elemi-1=e;returnOK;)/ListInsertStatusG

4、etElem(SqListL,inti,ElemType&e)返回顺序表中的第i个元素if(i<1|i>L.length)returnERROR;e=L.elemi-1;returnOK;)/GetElemStatusListDelete(SqList&L,inti,ElemType&e)删除顺序表中的第i个元素if(i<1|i>L.length)returnERROR;e=L.elemi-1;for(i;i<L.length;i+)L.elemi-1=L.elemi;-L.length;returnOK;)/ListDeleteStatu

5、sPriorElem(SqListL,ElemTypecur_e,ElemType&pre_e)返回一个不是首元素的前驱inti=2;if(cur_e=L.elem0)returnERROR;while(i<=L.length&&(L.elemi-1!=cur_e)i+;if(i=L.length+1)returnERROR;elsepre_e=L.elemi-2;returnOK;)/PriorElemStatusNextElem(SqListL,ElemTypecur_e,ElemType&next_e)返回一个不是末元素的后继inti=1;while

6、(i<L.length&&(L.elemi-1!=cur_e)i+;if(i=L.length)returnERROR;elsenext_e=L.elemi;returnOK;/NextElemStatusListEmpty(SqListL)判断顺序表是否为空returnL.length=0;/ListEmptyStatusListLength(SqListL)求顺序表的长度returnL.length;/ListLengthStatusDestroyList(SqList&L)销毁一个顺序表if(L.elem)free(L.elem);L.elem=NULL;&

7、quot;);printf("此顺序表已被销毁returnOK;)/DestroyListStatusClearList(SqList&L)(清空一个顺序表L.length=0;returnOK;)/ClearListStatusListPrint(SqList&L)(printf("顺序表为:");if(ListEmpty(L)(printf("空。n");returnERROR;)for(inti=0;i<L.length;+i)(printf("%-4d",L.elemi);)printf(&qu

8、ot;n");returnOK;)voidmain()SqListL;ElemTypea,b,c,d,e,f,pre_e,next_e;inti,j,k,l,m,menu;charp,q,r,s;intis_stop_;InitList(L);is_stop_=FALSE;while(!is_stop_)printf("1.添加元素2.查看指定位置的元素n”3.删除元素4.查找元素前驱n""5.查找元素后继6.检查是否为空n”"7.列出所有元素8.查看列表长度n""9.清空表10.释放列表内存并退出n""

9、11.退出n");printf("请选择,执行以上操作:");scanf("%d",&menu);switch(menu)/"1.添加元素;n"case1:printf("请输入你想创建的顺序表中元素的个数:");scanf("%d",&i);if(i<1)printf("您输入的值有误,无法创建顺序表。n");else(printf("请您依次输入您想创建的顺序表的元素:");for(j=1;j<=i;j+)(sca

10、nf("%d",&a);ListInsert(L,L.length+1,a);ListPrint(L);break;/"2.查看指定位置的元素n"case2:printf("请输入您想获取的元素的位序:");scanf("%d",&k);if(GetElem(L,k,b)printf("获得的元素为:%dn",b);elseprintf("您输入的值有误,无法获取元素。n");break;/"3.删除元素n"case3:printf(&qu

11、ot;请输入您想删除的元素的位序:");scanf("%d",&l);if(ListDelete(L,l,c)printf("删除的元素为:dn”,c);printf("删除元素后的顺序表为:,ListPrint(L);elseprintf("您输入的值有误,无法删除元素。n");break;/"4.查找元素前驱n"case4:printf("您想返回那个元素的前驱?”);scanf("%d",&d);if(PriorElem(L,d,pre_e)printf

12、("元素%d的前驱为dn”,d,pre_e);elseprintf("您输入的值有误,无法返回前驱。n");break;/"5.查找元素后继n"case5:printf("您想返回那个元素的后继?”);scanf("%d",&e);if(NextElem(L,e,next_e)printf("元素%d的后继为dn”,e,next_e);elseprintf("您输入的值有误,无法返回后继。n");break;/"6.检查是否为空n"case6:if(ListEmpty(L)printf("此顺序表为空。n");elseprintf("此顺序表不为空n");break;/"7.列出所有元素n"case7:ListPrint(L);break;/"8.查看列表长度n"case8:printf("此顺序表的长度为:%dn”,ListLength(L);bre

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论