数据结构与算法设计实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构与算法设计实验指导书
实验1顺序表的操作
一、实验目的
通过对线性表的一些基本的操作和具体的函数实现,深入理解线性表的逻辑结构特性;了解并掌握线性表的顺序存储结构的描述方法与顺序表的基本操作(建立、插入)的实现算法及各函数间的调用关系;熟练掌握对程序的输入、编辑、调试和运行过程。
二、实验内容
程序编程类题目:
顺序表的操作:实现顺序表的建立、插入等。
题目:设线性表中的数据元素是按值非递减有序排列的,试以顺序存储结构,编写一算法,将x插入到线性表的适当位置上,以保持线性表的有序性。
解:本题的算法思想是:先找到适当的位置,然后后移元素空出一个位置,再将 x 插入,并返回向量的新长度
三、实验步骤
1.问题理解和分析
充分地分析和理解问题本身,弄清要求做什么。
2.上机前程序静态检查
静态检查主要有两种途径:用一组测试数据手工执行程序;通过阅读或给别人讲解程序而深入全面地理解程序逻辑。
3.程序调试和运行
用多组不同的数据进行测试,记录测试数据和运行输出及结果
4.完成实验报告
按实验报告的要求完成书写工作。
实验2单链表的操作
一、实验目的
通过对单链表的一些基本的操作和具体的函数实现,深入理解线性表的逻辑结构特性;了解并掌握单链表的存储结构的描述方法与单链表的基本操作(建立、插入)的实现算法及各函数间的调用关系。
二、实验内容
程序编程类题目:
单链表的操作:实现单链表的建立;插入等。
题目:设线性表中的数据元素是按值非递减有序排列的,试以链式存储结构,编写一算法,将x插入到线性表的适当位置上,以保持线性表的有序性。
解:本题算法的思想是先建立一个待插入的结点,然后依次与链表中的各结点的数据域比较大小,找到插入该结点的位置,最后插入该结点。
三、实验步骤
1.问题理解和分析
充分地分析和理解问题本身,弄清要求做什么。
2.上机前程序静态检查
静态检查主要有两种途径:用一组测试数据手工执行程序;通过阅读或给别人讲解程序而深入全面地理解程序逻辑。
3.程序调试和运行
用多组不同的数据进行测试,记录测试数据和运行输出及结果
4.完成实验报告
按实验报告的要求完成书写工作。
一、实验目的
通过对栈的一些基本的操作和具体的函数实现,深入理解栈类型的特点;熟练掌握栈类型的实现方法,特别应注意栈满和栈空的条件以及它们的描述方法。
二、实验内容
程序编程类题目:
栈的操作:实现栈的定义、入栈、出栈等操作。
题目1:P80第5题
回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文,试写一个算法判定给定的字符向量是否为回文(提示:将一半字符入栈)。
题目2:设单链表中存放n 个字符,设计一个算法,使用栈判断该字符串是否中心对称,如abccba即为中心对称字符串.
提示:先用create()函数从用户输入的字符串创建相应的单链表,然后调用bj()函数判断是否为中心对称字符串。在bj()函数中先将字符串进栈,然后将栈中的字符逐个与单链表中字符进行比较。
三、实验步骤
1.问题理解和分析
充分地分析和理解问题本身,弄清要求做什么。
2.上机前程序静态检查
静态检查主要有两种途径:用一组测试数据手工执行程序;通过阅读或给别人讲解程序而深入全面地理解程序逻辑。
3.程序调试和运行
用多组不同的数据进行测试,记录测试数据和运行输出及结果
4.完成实验报告
按实验报告的要求完成书写工作。
一、实验目的
通过对队列的一些基本的操作和具体的函数实现,深入理解队列类型的特点;熟练掌握队列类型的实现方法,特别应注意队列满和队列空的条件以及它们的描述方法。
二、实验内容
程序编程类题目:
队列的操作:实现队列的定义、入队列、出队列等操作。
题目:舞伴问题
提示:先入队的男士或女士亦先出队配成舞伴。可用队列作为算法的数据结构。
在算法中,假设男士和女士的记录存放在一个数组中作为输入,然后依次扫描该数组的各元素,并根据性别来决定是进入男队还是女队。当这两个队列构造完成之后,依次将两队当前的队头元素出队来配成舞伴,直至某队列变空为止。此时,若某队仍有等待配对者,算法输出此队列中等待者的人数及排在队头的等待者的名字,他(或她)将是下一轮舞曲开始时第一个可获得舞伴的人
三、实验步骤
1.问题理解和分析
充分地分析和理解问题本身,弄清要求做什么。
2.上机前程序静态检查
静态检查主要有两种途径:用一组测试数据手工执行程序;通过阅读或给别人讲解程序而深入全面地理解程序逻辑。
3.程序调试和运行
用多组不同的数据进行测试,记录测试数据和运行输出及结果
4.完成实验报告
按实验报告的要求完成书写工作。
一、实验目的
通过实现二叉树结点结构和对二叉树的基本操作,掌握对二叉树每种操作的具体实现,学会利用递归和非递归方法编写对二叉树这种递归数据结构进行处理的算法
二、实验内容
程序编写类题目
[问题描述]
建立二叉树并实现对二叉树的先序、中序和后序遍历。
[基本要求]
(1)编写函数实现按先序序列建立二叉树
(2)分别编写函数实现对二叉树的先序、中序和后序遍历(其中应有一个非递归调用的函数)
(3)对给定的任意先序序列均能建立对应的二叉树
[测试数据]
见100页图6-14
[实现提示]
分别编写函数实现按先序序列建立二叉树、二叉树的先序、中序和后序遍历,最后编写主函数并在主函数中建立菜单,通过菜单项选择调用相应的函数。
三、实验步骤
1.问题理解和分析
充分地分析和理解问题本身,弄清要求做什么。
2.确定解决问题的方法(设计)
主要是找到解决问题的主要思路,是怎么做。在此阶段可考虑系统的功能和模块划分等。
3.详细设计和编码
确定算法的主要流程,再进行编程。
4.上机前程序静态检查
静态检查主要有两种途径:用一组测试数据手工执行程序;通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑。
5.程序调试和运行
6.完成实验报告
按实验报告的要求完成书写工作。