数据结构经典题目

  • 格式:doc
  • 大小:29.50 KB
  • 文档页数:3

下载文档原格式

  / 5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构课程设计实验指导书

一、课程设计要求

课程设计报告要求按照如下几个内容认真完成;其中包括:

1、需求分析:在该部分中叙述,每个模块的功能要求。

2、概要设计:在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。

3、详细设计:各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现)源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。

4、调试分析:测试数据,测试输出的结果和每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想。

5、课设总结:总结可以包括:课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容;

二、课程设计内容

1、线性表的使用

[问题描述]利用单链表编写一个学生成绩系统,具体包括查询成绩、修改成绩、删除成绩、新增成绩、全班平均成绩等。

2、栈的使用

[问题描述]对堆栈的数据进行存取操作,包括入栈、出栈和读取栈顶元素。

3、队列的使用

[问题描述]利用数组构建一个环状队列,建立时需要考虑队满和队空的情况,利用这两个条件对队列进行数据的存取操作,包括进队列和出队列。

4、线性表的综合使用

[问题描述]设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制一程序模拟该停车场的管理。

[实现要求]要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应缴纳的费用和它在停车场内停留的时间。

[实现提示]汽车的模拟输入格式可以是:(到达/离去,汽车牌照号,到达/离去的时刻)。例如,(‘A’,1,5)表示1号牌照车在5这个时刻到达,而(‘D’,5,20)表示5号牌照车在20这个时刻离去。整个程序可以在输入信息为(‘E’,0,0)时结束。本题可以用栈和队列来实现。

5、数组的使用、存储

[问题描述]写出在数组中插入元素和删除元素的程序。

6、数组的遍历、表示

[问题描述]设计一个能将二维数组转换成以列优先为主的一维数组及以行优先为主的一维数组的程序。

7、树的表示

[问题描述]已知以二叉链表做为存储结构,编写按层次顺序遍历二叉树的算法。

[实现提示]采用一个队列q,先将二叉树根结点入队列,然后退队列,输出该结点;若它有左子树,便将左子树根结点入队列;若它有右子树,便将右子树根结点入队列,如此直到队列空为止。

8、树的遍历

[问题描述] 已知二叉排序树以二叉树链表作存储结构,编写按从大到小的顺序输出二叉排序树的各个结点的算法。

[实现提示] 先建立一棵二叉排序树,以二叉链表表示。由于按中序遍历二叉排序树即按递增次序遍历,所以要按从大到小的顺序输出二叉排序树的各结点的值,可以对二叉排序树从树根结点中最右下的结点开始进行遍历,先遍历右子树,再访问根结点,最后遍历左子树,这样就可以得到一个按从大到小的顺序输出的序列。

9、哈夫曼树的使用

[问题描述]构造哈夫曼树和哈夫曼编码

设一份电文中有不同出现频率的字符,为了提高电文的输入和翻译效率,必须有一套简短而又不会产生歧义的字符代码。试根据哈夫曼算法,对电文中的不同字符,构造出一棵哈夫曼树,对每个字符进行编码。

10、图的表示

[问题描述]先定义一个图形,再将这个图形转换成邻接数组。

11、图的搜索

[问题描述] 很多涉及图上操作的算法都是以图的遍历作为基础的。试写一个程序,演示在连通的无向图上访问全部结点的操作。

[实现要求] 以邻接矩阵为存储结构的图进行dfs和bfs,以邻接表为存储结构的图进行dfs 或bfs。以用户指定的结点为起点,分别输出每种遍历下的结点访问序列。

12、排序

[问题描述]给出n 个学生的考试成绩表,每条信息由姓名与分数组成,试设计一个算法(1)按分数高低次序打印出每个学生在考试中获得的名次,分数相同的为同一名次;(2)按名次列出每个学生的姓名和分数。

[实现要求]学生的考试成绩表必须通过键盘输入数据而建立,同时要对输出进行格式控制。用冒泡排序或快速排序算法实现该问题,最后要对结果做简单分析。

13、查找

[问题描述]建立一棵二叉查找树,再在这棵树中查找某一指定结点,最后显示查找结果。[实现提示]先将欲查找的数值与二叉树的根结点比较,如果比根结点小,再与左子树的根结点比较,否则与右子树的根结点比较,如此,直到找到数据或到达了叶结点为止。