




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构中顺序表的基本操作头文件#include<stdio.h>#include<malloc.h>#include<stdlib.h>函数返回状态代码#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define INFEASIBLE -1#define OVERFLOW -2/运用动态分配的顺序存储结构#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef int ElemType;typedef structElemType *
2、elem;int length;int listsize;SqList;typedef int Status;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个元素前插入一个新的元
3、素 if(i<1 | i > +L.length) return ERROR;if(L.length=L.listsize)ElemType * newbase=(ElemType *)realloc(L.elem,(LIST_INIT_SIZE+LISTINCR EMENT)*sizeof(ElemType);if(!newbase) exit(OVERFLOW);L.elem=newbase;L.listsize=LIST_INIT_SIZE+LISTINCREMENT;勿忘for (int j=L.length; j>=i; -j)此处要注意L.elemj=L.elem
4、j-1;L.elemi-1=e;return OK;/ListInsertStatus GetElem(SqList L,int i,ElemType &e)返回顺序表中的第i个元素if(i<1|i>L.length) return ERROR;e=L.elemi-1;return OK;/GetElemStatus ListDelete(SqList &L,int i,ElemType &e)删除顺序表中的第i个元素if(i<1|i>L.length) return ERROR;e=L.elemi-1;for(i;i<L.length;i
5、+)L.elemi-1=L.elemi;-L.length;return OK;ListDeleteStatus PriorElem(SqList L,ElemType cur_e,ElemType &pre_e)返回一个不是首元素的前驱int i=2;if(cur_e=L.elem0) return ERROR;while(i<=L.length&&(L.elemi-1!=cur_e)i+;if(i=L.length+1) return ERROR;else pre_e=L.elemi-2;return OK;PriorElemStatus NextElem(S
6、qList L,ElemType cur_e,ElemType &next_e)返回一个不是末元素的后继int i=1;while(i<L.length&&(L.elemi-1!=cur_e) i+;if(i=L.length) return ERROR;else next_e=L.elemi;return OK;/NextElemStatus ListEmpty(SqList L)/判断顺序表是否为空return L.length = 0;/ListEmptyStatus ListLength(SqList L)求顺序表的长度return L.length;/L
7、istLengthStatus DestroyList(SqList &L)销毁一个顺序表if (L.elem)free(L.elem);L.elem=NULL;");printf("此顺序表已被销毁 return OK;DestroyListStatus ClearList(SqList &L)清空一个顺序表L.length=0;return OK;ClearListStatus ListPrint(SqList &L) printf("顺序表为:");if (ListEmpty(L)printf("空。n"
8、);return ERROR;for (int i=0; i<L.length; +i) printf("%-4d ”, L.elemi);printf("n"); return OK;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"
9、;"3. 删除元素4 .查找元素前驱n""5.查找元素后继6 .检查是否为空n""7.列出所有元素8 .查看列表长度n""9. 清 空 表10.释放列表内存并退出n""11.退出 n");printf("请选择,执行以上操作:");scanf("%d",&menu);switch (menu)/"1.添加元素;n"case 1:printf("请输入你想创建的顺序表中元素的个数:");scanf("
10、%d",&i);if(i<1) printf("您输入的值有误,无法创建顺序表。n");elseprintf("请您依次输入您想创建的顺序 表的元素:");for(j=1;j<=i;j+)scanf("%d",&a);ListInsert(L,L.length+1,a);ListPrint(L);break;/"2.查看指定位置的元素n"case 2:printf("请输入您想获取的元素的位序:");scanf("%d",&k);
11、if(GetElem(L,k,b) printf("获得的 元素为:dn",b);else printf("您输入的值有误,无法获取元素。n");break;/"3.删除元素n"case 3:printf("请输入您想删除的元素的 位序:");scanf("%d",&l);if(ListDelete(L,l,c)printf(" 删除的元素为:%dn",c);printf("删除元素后的顺序表为:)ListPrint(L);else printf("
12、;您输入的值有误)无法 删除元素。n");break;/"4.查找元素前驱n"case 4:printf("您想返回那个元素的前驱?"); scanf("%d",&d);if(PriorElem(L,d,pre_e) printf(" 元素d的前驱为dn",d,pre_e);else printf("您输入的值有误)无法 返回前驱。n");break;/"5.查找元素后继n"case 5:printf("您想返回那个元素的后 继?");s
13、canf("%d",&e);if(NextElem(L,e,next_e) printf(" 元素d的后继为dn",e,next_e);else printf("您输入的值有误)无法 返回后继。n");break;/"6.检查是否为空n"case 6:if(ListEmpty(L) printf("此顺序 表为空。n");else printf("此顺序表不为空n");/break;"7.列出所有元素n" case 7:/ListPrint(L);break;"8.查看列表长度n"case 8:printf(" 此顺序的长度为:dn",ListLength(L);/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高一下学期《双休时代自由时间背后暗藏残酷筛选+你是“猎手”还是“猎物”?》主题班会
- 2025年电动车仪表盘项目可行性研究报告
- 2025年甲醛捕捉剂项目可行性研究报告
- 2025年瓷线轮项目可行性研究报告
- 2025年玻璃纤维耐高温除尘(布)袋项目可行性研究报告
- 2025年猪肉排骨香精项目可行性研究报告
- 低压电器 课件 单元三 项目三 任务四 掌握三相异步电动机降压启动控制线路
- 山东省菏泽一中2025年高三下学期线上模拟考试(2)生物试题含解析
- 重庆航天职业技术学院《固体废物处理与处置》2023-2024学年第二学期期末试卷
- 云南省昆明黄冈实验学校2025届高三“临门一脚”英语试题含解析
- 印章刻制服务投标方案(技术标)
- 海底捞门店劳动合同
- 基准地价技术报告
- 某新能源(风能)公司:控股有限公司合同管理办法(试行)
- 静安区实验室施工方案模板
- 口腔门诊诊所过敏性休克抢救流程
- 风电机组吊装作业安全管理
- 世界500强CFO的财务管理笔记2
- LY/T 3302-2022人造板生产木粉尘燃爆防控技术规范
- 函数的单调性说课课件-中职技工学校中国劳动社会保障出版社数学第七版上册
- 水土保持工程质量评定规程sl3362006
评论
0/150
提交评论