- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机数据结构实验指导教程
数据结构实验一 C语言结构体与指针
一、实验目的
巩固复习前期所学C语言的函数参数传递、指针和结构体等知识点,加强学习数据结构语言基础。
二、实验内容
1.实现病历查询功能。具体要求如下:
定义一个结构体描述病人病历信息(病历号,姓名,症状);完成功能如下:
输入功能:输入5个病人的信息;
查询功能:输入姓名,在5个病历中进行查找,如果找到则显示该人的信息,如果没有找到,则显示“查无此人”。
假设病历类型名为patient,要求使用指针,并使用以下两个函数(函数的实现自行完成):
void readin(patient *p);//用来输入病人信息。void search(patient *p,char *x);//根据姓名查询病人病历信息,并打印出来。
提示:请注意输入函数的用法。
2.设计一个函数,计算S=1-2+3-4+5-6+……+/-N的值,并计算你所设计的函数的时间复杂度。
三、实验源代码
此处写程序源代码,请在程序中适当注释,便于老师更快地看懂你的程序。
四、实验结果
此处写出程序运行的结果,即输入数据是什么,输出数据是什么,分析结果是否正确,如果不正确是什么原因。
五、实验心得
此处写出完成此实验后有什么收获,碰到什么因难,又是如何解决的。请不要写“这门课好难学”、“一点也不会”之类的话语,因为这对你学习并没有帮助。关键是通过实验发现自己不会的知识点,然后攻克它!
数据结构实验二 顺序表的运用
一、实验目的
1、掌握建立顺序表的基本方法。
2、掌握顺序表的插入、删除算法的思想和实现,并能灵活运用
二、实验内容
用顺序表实现病历信息的管理与查询功能。具体要求如下:
1. 利用教材中定义顺序表类型存储病人病历信息(病历号,姓名,症状);要求使用头文件。
2.设计顺序表定位查找算法,完成的功能为:在线性表L中查找数据元素x,如果存在则返回线性表中和x值相等的第1个数据元素的序号;如果不存在,则返回-1。
函数定义为 int ListFind(SequenceList L,char *x)
请在主函数中测试查找是否存在姓名为x的病人,并根据返回的序号打印出病人信息。
数据结构实验三 有序单链表
一、【实验目的】1、掌握建立单链表的基本方法。
2、掌握单链表的插入、删除算法的思想和实现
二、【实验内容】
仿照教材中的单链表实现例子,自己设计一个有序单链表,单链表中的数据元素为整型并递增有序。有序单链表的定义:
逻辑结构:有序线性表,数据元素递增有序
存储结构:链式
操作集合:初始化、插入、删除、撤销
(1)ListInitiate(L) 初始化线性表,生成一个空表L。
(2)ListInsert(L,x) 在有序表L中插入数据元素x,使得新表仍然有序。
(3)ListDelete(L,x) 删除有序表L中的数据元素x,若删除成功则返回1,不成功则返回0。
(4)Destroy(L) 撤销单链表
要求:
1.有序单链表的操作集合有如下操作:初始化、插入、删除、撤销,使用头文件单链表的代码。
2.编写主函数main()验证所设计的有序单链表是否能正确插入、删除。
提示:
1.插入操作时,从链表的第一个数据元素结点开始,逐个比较每个结点的data域值和x的值,当data小于等于x时,进行下一个结点的比较;否则就找到了插入结点的合适位置,此时申请新结点把x存入,然后把新结点插入;当比较到最后一个结点仍有data小于等于x时,则把新结点插入单链表尾。
2.删除操作时,从链表的第一个数据元素结点开始,逐个比较每个结点的data域值和x的值,当data小于等于x时,进行下一个结点的比较;否则就找到了要删除的结点,删除结点后释放结点。如果到了表尾还没有找到值为x的结点,则链表中没有要删除的元素。
实验四 线性表综合应用
一、【实验目的】1、掌握线性表的两种存储结构的灵活运用。
二、【实验内容】
约瑟夫环(Josephus)问题的求解
具体描述是:设有编号为1,2,……,n的n(n0)个人围成一个圈,从第K个人开始报数,报到m时停止报数,报m的人出圈,再从他的下一个人起重新报数,报到m时停止报数,报m的出圈,……,如此下去,直到所有人全部出圈为止。当任意给定n和m后,设计算法求n个人出圈的次序。
请根据以上描述,选择合适的存储结构,完成 约瑟夫环的求解。请打印出出圈人的序号。
提示:约瑟夫环问题主要可分解为建环、删除两个操作。可使用课上给出的头文件。
三、实验源代码
实验五 栈
一、实验目的:
1.掌握堆栈的存储方式和基本操作
2.掌握堆栈后进先出运算原则在解决实际问题中的应用
二、实验内容:
1.利用栈结构,编写程序将十进制数转换成二进制数或八进制数。
说明:十进制数值转换成二进
文档评论(0)