- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
贵州大学实验报告
学院:计算机科学与信息学院 专业: 班级:
姓名 学号 实验组 实验2 实验时间 指导教师 叶洁 成绩 实验项目名称 实验二:线性表的链式存储结构 实验目的 1. 熟练掌握线性表的基本操作在链式存储上的实现;2. 以线性表的各种操作(建立、插入、删除等)的实现为重点;3. 掌握线性表的动态分配顺序存储结构的定义和基本操作的实现; 实验环境 运行Microsoft Visual Studio 2010的微机一台
实验内容 1.输入一组,建立。.。编写一个主函数,调试上述算法。 实验数据 未创建链表前选择其它操作会提示操作失败,选择【1】创建链表,在创建链表时,键入“no”来结束输入结点,如何先后键入-44,11,22,当键入“no”时,退出录入数据.如图
在选择【2】查找元素操作时,又会产生3个子选项,输入不合法的操作都会提示非法。选择【1】按元素查找时,输入相应的元素,会显示相应的查找结果,选择【2】按位置查找,键入位置值,会显示相应的查找结果,若位置值超出链表的长度则会查找失败。选择【3】退出查找并返回主菜单。
选择【3】插入元素时,也会弹出3个子菜单,键入1~3之外的任何字符都会提示非法操作。选择【1】按有序插入,若键入不任何非整型字符串都会提示非法并要求重新正确输入。或按有序插入12,会插入11与22之间,即第3个位置。选择【2】按位置插入,如在第5个位置插入45。如果选择位置45会提示位置值无效,因为链表总结点数也只有5个。选择【3】退出插入,则会退出插入并返回主菜单。具体操作实现如下:
选择【4】删除元素,则会生成3个了菜单。也只有输入相应的序号才能执行相应的功能,键入其它字符都会提示非法并要求重新输入。如选择【1】按元素删除,要求输入待删除的元素,若键入非法数据则会提示非法,键入一个数后会查找到这个数据并删除,若键入链表中不存在的数据则提示删除失败,执行完后又跳回子菜单。如选择【2】按位置删除,输入相应的位置值,若位置值超出了链表的长度会提示错误信息,若位置在链表长度之内,则会把相应位置的元素删除,选择【3】退出删除,则退出删除并返回主菜单。删除前,链表为:-44,11,12,22,12;删除后为:-44,11,12。具体实现如图:
选择【5】显示链表则会显示当前链表所有信息,包括每个结点中元素和链表结点数。如图所示:
为了测试【6】排序链表的功能,因为现有的链表为-44,11,12有序链表。不妨先按位置插入几个数使其成为无序表,再选择【6】排序链表,排序前后如图:
选择【7】清空链表,则会清空当前链表,清空链表后在再次创建一个链表前无法使用其它功能。具体实现如图:
八、在主菜单的8个选项中若键入1~8之外任何其它信息则会提示选择的操作非法,并要求重新输入。
若选择【8】退出系统,会出现,以保证不会因为意外操作面退出系统。选择“n”则不会退出系统,选择“y”则会退出系统。键入其它任何信息,则会提示操作非法,并要求重新选择。具体功能实现如图:
实验总结
1.虽然实验要求在主函数中实现对各种功能函数的调用,但考虑到可能会在主函数中实现其实现其它功能,所有在写程序并没有把调用写在主函数中,而是统一写在void Menu( )函数中,再由主函数调用这个Menu函数,以实现对链表相应的操作。
2.为提高本程序的健壮性,在写程序时,我用到了int atoi(char *p)函数来将输入的合法的字符串转化成整型数据。由于键入整型数据地方很多,所以编写了int JudgeData()函数,在每次要输入数据的地方都调用这个函数来判断输入数据的合法性;同样在选择相应操作时,我也相应地编写了char JudgeOperation( )函数以判断选择操作的合法性,在每处需要选择相应操作的地方都调用这个函数来判断选择操作的合法性。利用这两个函数大大提高了程序的健壮性,解决了实验一中的输入不合法类型数据会进入死循环的现象。
3.通过本次实验让我对链表的创建、插入、删除、清空、排序等操作都有了进一步的了解和深入的认识。
4.本次实验和实验一和实验二比,在健壮性上有很大的提高,并且由于对char JudgeOperation( )和int JudgeData()的反复调用,节省了不少代码。
5.和实验一相比,由于本次实验在输入数据的地方调用了int JudgeData()函数,因此只能将ElemType定义为int型,若定义为char类型,则运行程序不会产生预期的效果。这一点还望老师指正! 指导教师意见
签名: 年 月 日 程序清单如下:
// 实验二-链表.cpp : 定
文档评论(0)