实验任务书3-8(2014)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验3 栈的应用
实验目的
1.会定义顺序栈和链栈的类型。
2.掌握栈的插入和删除在操作上的特点。
3.熟悉对栈的一些基本操作和具体的函数定义。
实验要求
1.独立完成;
2.程序调试正确,有执行结果。
实验内容(基础题必做,应用题、提高题任选)
1. 基础题:
按照教材中抽象数据类型栈的定义,采用顺序存储结构(用动态数组)或链式存储结构,编写主函数演示顺序栈/链栈的基本操作。
2.应用题:
(1)判断给定的字符串是否中心对称。
(2)数制转换
(3)表达式括号匹配问题
3. 提高题
(1)算符优先算法为表达式求值
(2)迷宫求解
实验4 队列的应用
实验目的
1.掌握队列的存储结构及基本操作。
2.掌握循环队列的设置及循环队列的各种基本操作的实现。
3.通过具体的应用实例,进一步熟悉和掌握队列的实际应用。
实验要求
1.独立完成;
2.程序调试正确,有执行结果。
实验内容(基础题必做,应用题任选)
1、基础题:
按照教材中抽象数据类型队列的定义,采用顺序存储结构(循环队列)或链式存储结构,编写主函数演示循环队列/链队列的基本操作。
2、应用题:
舞伴问题:假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队,跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴,若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。设计一个函数partner(),模拟上述舞伴配对问题。
基本要求:
1)由键盘输入数据,每对数据包括姓名和性别;
2)输出结果包括配成舞伴的女士和男士的姓名,以及未配对者的队伍名称
和队头者的姓名;
实验5 树的应用
实验目的
1.熟悉二叉树结点的结构和对二叉树的基本操作。
2.掌握对二叉树每一种操作的具体实现。
3.学会利用递归方法编写对二叉树这种递归数据结构进行处理的算法。
4.在二叉树基本操作的基础上掌握对二叉树的一些其它操作的具体实现方法。
5.掌握构造哈夫曼树以及哈夫曼编码的方法。
实验要求
1.独立完成;
2.程序调试正确,有执行结果。
实验内容(基础题必做,应用题任选)
1. 基础题:
按照教材中抽象数据类型二叉树的定义,采用二叉链表存储结构,编写主函数演示二叉树的基本操作(不少于5个),如:
(1) Status InitBTree( BiTree &BT ) //初始化二叉树BT
(2) Status CreateBTree(BiTree &BT, char *a )
//根据先序序列a建立二叉链表存储结构
(3)Status EmptyBTree(BiTree BT)
//检查二叉树BT是否为空,空返回Yes,否则返回No
(4) int DepthBTree(BiTree BT) //求二叉树BT的深度并返回该值
(5) Status FindBTree(BiTree BT, TElemType x)
//查找二叉树BT中值为x的结点,若查找成功返回该结点地址,否则返回Error
(6) void PreOrder(BiTree BT) //先序遍历二叉树BT
(7) void InOrder(BiTree BT) //中序遍历二叉树BT
(8) void PostOrder(BiTree BT) //后序遍历二叉树BT
(9) void LevelOrder(BiTree BT ) //按层次遍历二叉树BT
(10) void PrintBTree(BiTree BT ) //输出二叉树BT
2.应用题
家谱管理:本题目对家谱管理进行简单的模拟,以实现查看祖先和子孙个人信息、插入家族成员、删除家族成员等功能。
实验6 图的应用
实验目的
1.掌握图的各种存储结构,特别要熟练掌握邻接矩阵和邻接表存储结构。
2.遍历是图各种应用的算法的基础,要熟练掌握图的深度优先遍历和广度优先遍历算法,复习栈和队列的应用。
实验要求
1.独立完成;
2.程序调试正确,有执行结果。
实验内容
1、基础题(至少做一个)
(1)图的邻接矩阵定义及实现:
定义图的邻接矩阵存储结构,并编写图的初始化、建立图、深度优先/广度优先输出图、输出图的每个顶点的度等基本操作实现函数。以下图为例,建立一个验证操作实现的主函数进行测试。
(2)图的邻接表的定义及实现:
定义图的邻接表存储结构,并编写图的初始化、建立图、深度优先/广度优先输出图、输出图的每个顶点的度等基本操作实现函数。同时在主函数中调用这些函数进行验证(以下图为例)。
实验7 图的应用
实验目的
1. 掌握带权图的邻接矩阵存储结构。
2.掌握以邻接矩阵作为存储结构的生成图的最小生成树的普里姆/克鲁斯卡尔算法。
实验要求
1.独立完成;
2.程序调试正确,有执行结果。
实验内容(基础题必做,应用题任选)
1、基础题
编写用邻接矩阵表示无向带权图时图的基本操作的实现函数,主要包括:
①初始化邻接矩阵表示的无向带权图
②建立邻接矩阵表示的无向带权图(即通过输入图的每条边建立图的邻接矩阵)
③输出邻接矩阵表示的无向带权图(即输出图的每条边)。
同时建立一个验证操作实现的主函数进行测试。
2、应用题
编写生成最小生成树的Prim算法函数 void Prim(adjmatrix G, edgset CT, int n)或者克鲁斯卡尔算法函数以及输出边集数组的函数 void
PrintEdge(edgeset CT, int n)。编写主函数测试生成最小生成树并输出(即输出边集)。
测试数据如下: