数据结构A实验指导书1.docx
《数据结构A实验指导书1.docx》由会员分享,可在线阅读,更多相关《数据结构A实验指导书1.docx(9页珍藏版)》请在冰豆网上搜索。
数据结构A实验指导书1
目录
实验规则················································2
实验环境················································2
实验报告要求············································3
实验一单链表···········································4
实验二栈···············································5
实验三迷宫求解·········································6
实验四最短路径·········································7
实验五哈希表···········································8
实验六内部排序·········································9
实验七综合实验·········································10
实验规则
为了顺利完成实验教学任务,确保人身、设备的安全,培养严谨、踏实、实事求是的科学作风和爱护国家财产的优良品质,特制定以下实验规则:
1、实验前必须充分预习,完成指定的预习任务。
预习要求如下:
(1)认真阅读指导书,进行必要的设计与计算。
(2)熟悉实验内容。
(3)预先复习,并按要求编写程序。
(4)未完成预习任务者不得进入实验室。
2、遵守以下纪律:
(1)在实验室不得做和实验无关的事情。
(2)进行任课老师指定内容以外的实验,必须经指导教师同意。
(3)遵守纪律,不迟到。
(4)保持实验室内安静、整洁,爱护公物,不许乱写乱画。
实验环境
本实验在386以上的微机上进行,运行环境为TurboC。
实验报告要求
1、实验题目
2.实验目的
3.实验环境
4.实验内容与完成情况(可以附上自主设计的源程序)
5.出现的问题
6.对问题的解决方案
7.实验思考:
(学生对本次实验的收获的总结)
实验一单链表
一、实验目的
掌握线性表的链式存储结构及其基本操作。
二、预习要求
1、看懂书上的算法,深入理解链表的物理存储模式和逻辑模式。
2、根据要求,编写程序准备上机调试。
三、实验内容
实现一个简单的学生信息管理系统,该系统的功能有:
1、利用单链表建立学生基本信息表
2、浏览每个学生的信息
3、根据学号查询某个学生的基本信息
4、添加学生信息到单链表中
5、删除一个学生的信息
四、实现提示
设计结点的结构体类型,包括学生的学号、姓名、年龄、性别;要求设计一个简单的菜单界面,根据需要选择所要进行的操作;构造函数,每一个函数实现上述的一个功能。
五、思考题
1、如何用用带表头结点的单链表作为多项式的存储表示,实现两个多项式的相加?
2、约毖夫环的实现。
3、如何利用文件实现学生信息的存取。
实验二栈
一、实验目的
深入了解并掌握栈的特性及其在实际中的应用;熟练掌握栈的算法实现;运用栈操作求解实际问题。
二、预习要求
1、看懂书上的算法,深入理解栈的特性和存储结构,以便在实际问题背景下灵活运用。
2、根据要求,编写程序准备上机调试。
三、实验内容
利用栈实现数据的分类,要求当输入为偶数时进栈1,当输入为奇数时进栈2,最后分别从栈1和栈2输出偶数和奇数序列。
四、实现提示
1、开辟一个连续的存储空间,实现两个栈顺序存储空间的共享;分别在两端设置栈顶指针,并按要求实现栈操作。
2、采用顺序存储实现栈的初始化、入栈、出栈操作。
五、思考题
1、两栈空间共享时,栈满的条件是什么?
2、为停车场编制进行管理的模拟程序(习题集P96,2.1)。
3、编写程序,利用栈实现表达式求值。
实验三迷宫求解
一、实验目的
通过实践掌握用数组解决实际问题的方法。
二、预习要求
矩阵的相关内容,栈和队列的基本操作。
三、实验内容
以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍,设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。
迷宫数据为:
11011011
20011010
11100111
20011001
11001101
01110000
入口位置:
11
出口位置:
68
四、实现提示
可以用一种称为广度搜索的算法,将迷宫的入点(1,1)作为第一个出发点,向四周搜索可通行的位置,形成第一层新的出发点,然后对第一层中各个位置再分别向四周搜索可通行的位置,形成第二层新的出发点,如此进行下去直至到达迷宫的出口点(m,n)为止。
为了避免多次检测是否走到边沿,将迷宫周围各镶上一条取值为1的边,相当于在迷宫的周围布上一圈不通过的墙。
为了避免有的点被重复到达,应标志已通过的位置,可以采用一个标志数组来标志已通过了的位置。
为了记录搜索过程中到达位置及其出发点,可以建立一个结构体数组,数组的每组元素有三个域x,y,pre,其中分别记下x和y到达位置的行、列坐标,pre记下其出发点在数组中的坐标。
五、思考题
1、如何用一个以链表作存储结构的栈类型,实现迷宫求解的非递归算法。
2、以方阵形式输出迷宫及其通路。
3、编写程序,实现一个能进行稀疏矩阵基本运算的运算器。
实验四最短路径(旅游景点导游咨询模拟)
一、实验目的
利用图的最短路径原理为用户提供路径咨询,掌握求最短路径的算法并编程实现。
二、预习要求
学习了解图的存储结构,掌握求最短路径的两种算法。
三、实验内容
设计一个旅游景点导游模拟程序,为来访的客人提供最短路径的信息查询服务。
四、实现提示
任意选取n个景点,构成一个有向带权图,图中顶点表示景点,弧上的权值表示两点间的距离。
咨询以用户和计算机的对话方式进行,由用户输入起始点和终点,输出信息:
最短路径是多?
并指出所经过的城市。
存储结构可选用邻接矩阵。
五、思考题
1.如何实现对城市信息进行编辑(如:
添加或删除)的功能。
2.用邻接链表作存储结构,求一指定景点出发,到其余各景点的最短路径。
实验五哈希表
一、实验目的
通过实践掌握哈希表的建表和查找过程。
二、预习要求
1、深入理解静态查找表和动态查找表的区别,静态查找表中三种查找方法对表中数据元素的要求。
2、用线性探测法解决冲突和链地址法解决冲突的方法。
3、哈希函数的构造方法。
三、实验内容
针对某班中的30个人名设计一个哈希表,使得平均查找长度不超过2,完成相应的建表和查表过程,要求用除留余数法构造哈希函数,用线性探测再散列法解决冲突。
四、实现提示
注意条件:
平均查找长度不超过2。
五、思考题
1、在非链地址处理冲突的哈希表中删除一个记录时,应如何处理?
2、比较各种查找算法的特点,如何根据实际情况选择合适的查找方法。
实验六内部排序
一、实验目的
直观感受算法的关键字比较次数和关键字移动次数。
二、预习要求
1、常见的排序算法(插入排序、交换排序、选择排序、归并排序、基数排序等)的思想、特点及其适用条件。
2、根据要求,编写程序准备上机调试。
三、实验内容
对直接插入排序和简单选择排序算法进行关键字比较次数和关键字移动次数的比较。
四、实现提示
测试数据可以为几组典型的数据:
正序、逆序、乱序。
五、思考题
1、快速排序算法的非递归实现。
2、结合实验,理解针对不同待排元素的特点而选择不同排序方法的重要性。
3、什么是稳定排序和不稳定的排序?
4、如何对本实验进行时间、空间的复杂度分析。
实验七排序算法的链表实现(综合实验)
一、实验目的
加深对链式存储结构的理解,培养综合运用所学知识解决实际问题的能力,
二、预习要求
1、单链表的结构及其相关算法的实现。
2、各种排序算法的基本思想。
3、根据要求,编写程序准备上机调试。
三、实验内容
1、简单的用户界面设计。
2、建立单链表。
3、在单链表中运用所学的排序思想,实现冒泡排序和简单选择排序。
4、输出验证结果的正确性。
四、实现提示
1、简单的用户界面设计,在主函数中设计一个简单的菜单,分别调试上述程序。
2、选用带头结点单链表作存储结构,由学生自己定义。
五、思考题
1、如何在单链表中实现直接插入排序。
2、对本实验进行时间、空间的复杂度分析。