ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:20.82KB ,
资源ID:7204289      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7204289.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验 一线性表的基本操作实现及其应用.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验 一线性表的基本操作实现及其应用.docx

1、实验 一 线性表的基本操作实现及其应用实验 一 线性表的基本操作实现及其应用一、实验目的1、熟练掌握线性表的基本操作在两种存储结构上的实现。2、会用线性链表解决简单的实际问题。二、实验内容题目一 链表基本操作该程序的功能是实现单链表的定义和操作。该程序包括单链表结构类型以及对单链表操作的具体的函数定义和主函数。其中,程序中的单链表(带头结点)结点为结构类型,结点值为整型。单链表操作的选择以菜单形式出现,如下所示:please input the operation: 1.初始化 2.清空 3.求链表长度 4.检查链表是否为空 5.检查链表是否为满 6.遍历链表(设为输出元素)7.从链表中查找元

2、素 8.从链表中查找与给定元素值相同的元素在表中的位置 9.向链表中插入元素 10. 从链表中删除元素 其他键退出。 实验 一 线性表的基本操作实现及其应用一、实验目的1、熟练掌握线性表的基本操作在两种存储结构上的实现。2、会用线性链表解决简单的实际问题。二、实验内容题目一 链表基本操作该程序的功能是实现单链表的定义和操作。该程序包括单链表结构类型以及对单链表操作的具体的函数定义和主函数。其中,程序中的单链表(带头结点)结点为结构类型,结点值为整型。单链表操作的选择以菜单形式出现,如下所示:please input the operation: 1.初始化 2.清空 3.求链表长度 4.检查链

3、表是否为空 5.检查链表是否为满 6.遍历链表(设为输出元素)7.从链表中查找元素 8.从链表中查找与给定元素值相同的元素在表中的位置 9.向链表中插入元素 10. 从链表中删除元素 其他键退出。 题目一 链表基本操作一、数据结构与核心算法的设计描述1、单链表的最大长度#define MAXSIZE 1002、单链表的结点类型定义/* 定义elemtype为int类型 */typedef int elemtype; /* 单链表的结点类型 */typedef struct STD elemtype elem; STD *next;list, * linklist;3、初始化单链表 /* 函数功

4、能:对链表进行初始化 参数:链表(linklist L)成功初始化返回1,否则返回0 */ int init(linklist &L) L=(linklist)malloc(sizeof(list);/头结点申请内存。 if(!L) /判断有无申请到空间。 return 0; /没有申请到内存,参数失败返回0 L-next=NULL; L-elem=0; /单链表中有多少元素 return 1; /成功参数返回14、清空单链表 /* 函数功能:把链表清空 参数:链表(linklist L)成功清空链表返回1 */int makeempty(linklist &L) linklist p,q;

5、p=L-next; while(p) /当p非空时,删除p q=p; p=p-next; free(q); L-next=NULL; /只剩头指针,所以L-next=NULL L-elem=0; /清空后链表中元素为0 return 1; /清空后返回15、求链表长度 /* 函数功能:返回链表的长度参数;链表(linklist L)函数返回链表的长度 */int getlength(linklist L) linklist p; p=L-next; int j=0; while(p) j+; /统计链表中元素 p=p-next; return j; /最后返回链表长度.6、判断链表是否为空/*

6、 函数功能:判断链表是否为空参数;链表(linklist L)链表为空时返回0,不为空返回1 */int isempty(linklist L) if(L-next) /头结点后有元素表示链表不空则返回1 return 1; else return 0; /头结点后没有元素表示链表不空则返回07、检查链表是否为满/* 函数功能:判断链表是否为满参数;链表(linklist L)链表为满时返回0,不为满返回1 */int isfull(linklist L) if(L-elem next; if(isempty(L)=0) /当链表为空时则输出链表为空 cout链表为空!; while(p) /

7、当链表为不空时则输出链表每个节点的elem值 coutelemnext; coutnext; while(p) if(p-elem=i) /判断有无元素I,有返回1 return 1; p=p-next; return 0; /没有找到返回010、从链表中查找与给定元素值相同的元素在表中的位置/* 函数功能: 从链表中查找给定元素的位置参数;链表(linklist L),给定元素(int i)如果链表中有给定元素i则返回元素的位置, 没有则返回0 */int location(linklist L,int i) linklist p; int j=0; p=L-next; while(p) j

8、+; if(p-elem=i) /判断有无元素i,有返回其的位置j return j; p=p-next; return 0; /没有则返回011、向链表中插入元素/* 函数功能:向链表中的某个位置插入元素参数;链表(linklist L),位置(int i),元素(elemtype e)成功插入返回1,否则返回0 */int insert(linklist &L, int i, elemtype e) linklist p, s; int j = 0; p = L; while (p&jnext; j +; if(ji-1|!p) /不符合条件返回0 return 0; s = (linkl

9、ist)malloc(sizeof(list); /给节点s分配内存 s-elem = e; s-next = p-next; /插入操作 p-next = s; L-elem+; /插入完成后头结点的elem加1 return 1; /成功插入返回112、从链表中删除元素/* 函数功能:在链表中的某个位置删除元素参数;链表(linklist L),位置(int i),元素(elemtype e)成功删除返回1,否则返回0 */int deleteelem(linklist &L,int i) linklist p,q; int j=0; p=L; while (p-next&jnext; j

10、+; if(ji-1|!(p-next) /不符合条件返回0 return 0; q=p-next; p-next=q-next; /删除操作 free(q); L-elem-; /插入完成后头结点的elem减1 return 1; /成功删除返回113、主界面函数/* 函数功能:显示所有操作功能参数;无 */void zhujiemian() coutendlendl; couttttt数据结构实验一endl; couttt-endlendl; couttt 1 链表初始化endl; couttt 2 清空链表endl; couttt 3 求链表长度endl; couttt 4 链表是否为空

11、endl; couttt 5 检查链表是否为满endl; couttt 6 遍历链表endl; couttt 7 从链表中查找元素endl; couttt 8 从链表中查找与给定元素值相同的元素在表中的位置endl; couttt 9 向链表中插入元素endl; couttt10 从链表中删除元素endlendl; couttt其他键退出endl; couttt-endlendlendl; couta; /输入要进行的操作的序号 coutendl; do switch(a) /用switch语句进行选择操作 case 1: /初始化 if(init(L)=1) cout初始化成功!endl;

12、else cout初始化失败!endl; break; case 2: if(makeempty(L)=1) /链表置空 cout链表已清空!endl; else cout链表清空失败!endl; break; case 3: /链表的长度 b=getlength(L); cout链表的长度为:bendl; break; case 4: /判断链表是否空 if(isempty(L)=1) cout链表不空!endl; else cout链表为空!endl; break; case 5: /判断链表是否满 if(isfull(L)=1) cout链表不满!endl; else cout链表已满!

13、endl; break; case 6: /遍历链表 show(L); break; case 7: /链表是否有要查找元素 coutb; if(find(L,b)=1) cout链表中有元素bendl; else cout链表没中有元素bendl; break; case 8: /输出链表要查找元素的位置 cout您要查找的元素为:b; if(location(L,b)=0) cout没有您要查找的元素bendl; else cout您查找的元素b在第location(L,b)个位置。endl; break; case 9: do cout输入你要插入的位置和元素bc; while (bge

14、tlength(L)+1)/* 此处可以对错误的输入进行判断 */ cout插入位置错误!请重新插入!bc; if(insert(L,b,c)=0) cout您插入的位置不对,插入失败!endl; else cout插入成功!endl; coutYES; while(YES=Y|YES=y); break; case 10: do if(getlength(L)=0)/判断链表是否为空若是则输出链表为空,并继续 cout链表为空无法删除!endl; break; cout输入你要删除元素的位置:b; while(bgetlength(L)/* 此处可以对错误的输入进行判断 */ cout输入错

15、误!请重新输入!b; if(deleteelem(L,b)=0) cout您删除的位置不对,删除失败!endl; else cout删除成功!endl; coutYES; while(YES=Y|YES=y); break; default: break; system(pause);/按任意键继续 system(cls);/清理屏幕上的内容 zhujiemian();/显示主界面 cina; /输入要进行操作的序号 cout0&a=10);/对进行输入的数进行判断(不在09则程序结束)说明:通过调用序列号不同的函数进行各种操作。函数根据每次输入的数进行判断不在110内的函数将结束,否则将继续

16、进行。三、程序调试及运行结果分析 程序第一步必须执行初始化,否则程序不能运行。 在程序第一步必须执行初始化后,程序完美运行,在进行任何函数操作程序都是正常运行,而且本程序对插入和删除时进行错误检测如有的地方不可以插入,有点地方不能删除,如果链表为空时则程序会输出链表为空,并继续进行其他操作,大大减少了程序的bug。四、实验总结 通过这次试验我熟悉了对链表的基本操作,对基本的链表操作有了很好的掌握,知道自己容易在什么地方出错。五、程序清单/实验一.h#include iostream#include malloc.h#include stdlib.h#include windows.husing

17、 namespace std;#define MAXSIZE 100 /链表的最大长度typedef int elemtype;typedef struct STD elemtype elem; STD *next;list, * linklist;void zhujiemian() coutendlendl; couttttt数据结构实验一endl; couttt-endlendl; couttt 1 链表初始化endl; couttt 2 清空链表endl; couttt 3 求链表长度endl; couttt 4 链表是否为空endl; couttt 5 检查链表是否为满endl; co

18、uttt 6 遍历链表endl; couttt 7 从链表中查找元素endl; couttt 8 从链表中查找与给定元素值相同的元素在表中的位置endl; couttt 9 向链表中插入元素endl; couttt10 从链表中删除元素endlendl; couttt其他键退出endl; couttt-endlendlendl; coutnext=NULL; L-elem=0; return 1;int insert(linklist &L, int i, elemtype e) linklist p, s; int j = 0; p = L; while (p&jnext; j +; if(

19、ji-1|!p) return 0; s = (linklist)malloc(sizeof(list); s-elem = e; s-next = p-next; p-next = s; L-elem+; return 1;int deleteelem(linklist &L,int i) linklist p,q; int j=0; p=L; while (p-next&jnext; j+; if(ji-1|!(p-next) return 0; q=p-next; p-next=q-next; free(q); L-elem-; return 1;int isempty(linklist

20、 L) if(L-next) return 1; else return 0;void show(linklist L) linklist p; p=L-next; if(isempty(L)=0) cout链表为空!; while(p) coutelemnext; coutnext; int j=0; while(p) j+; p=p-next; return j;int makeempty(linklist &L) linklist p,q; p=L-next; while(p) q=p; p=p-next; free(q); L-next=NULL; L-elem=0; return 1

21、;int find(linklist L, int i) linklist p; p=L-next; while(p) if(p-elem=i) return 1; p=p-next; return 0;int location(linklist L,int i) linklist p; int j=0; p=L-next; while(p) j+; if(p-elem=i) return j; p=p-next; return 0;int isfull(linklist L) if(L-elem a; coutendl; do switch(a) case 1: if(init(L)=1) cout初始化成功!endl; else cout初始化失败!endl; break; case 2: if(makeempty(L)=1) cout链表已清空!endl;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1