文华学院
数据结构大型作业(课程设计)
2007-9-1
一、大型作业(课程设计)题目与内容
1.1
二叉排序树与平衡二叉排序树基本操作的实现
1.
用二叉链表作存储结构
(1)
以回车('/n')为输入结束标志,输入数列L,生成二叉排序树T;
(2)
对二叉排序树T作中序遍历,输出结果;
(3)
计算二叉排序树T的平均查找长度,输出结果;
(4)
输入元素x,查找二叉排序树T,若存在含x的结点,则删除该结点,并作中序遍历(执行操作2);否则输出信息“无结点x”;
(5)
判断二叉排序树T是否为平衡二叉树,输出信息“OK!”/“NO!”;
*(6)
再用数列L,生成平衡二叉排序树BT:当插入新元素之后,发现当前的二叉排序树BT不是平衡二叉排序树,则立即将它转换成新的平衡二叉排序树BT;
*(7)
计算平衡的二叉排序树BT的平均查找长度,输出结果。
2.
用顺序表(一维数组)作存储结构
(1)
以回车('/n')为输入结束标志,输入数列L,生成二叉排序树T;
(2)
对二叉排序树T作中序遍历,输出结果;
(3)
计算二叉排序树T的平均查找长度,输出结果;
(4)
输入元素x,查找二叉排序树T:若存在含x的结点,则删除该结点,并作中序遍历(执行操作2);否则输出信息“无x
”
;
(5)
判断二叉排序树T是否为平衡二叉树,输出信息“OK!”/ “NO!”;
1.2.
图的基本操作的实现
(1)
自选存储结构,输入含n个顶点(用字符表示顶点)和e条边的图G;
(2)
求每个顶点的度,输出结果;
(3)
指定任意顶点x为初始顶点,对图G作DFS遍历,输出DFS顶点序列(提示:使用一个栈实现DFS);
(4)
指定任意顶点x为初始顶点,对图G作BFS遍历,输出BFS顶点序列(提示:使用一个队列实现BFS);
(5)
输入顶点x,查找图G:若存在含x的顶点,则删除该结点及与之相关连的边,并作DFS遍历(执行操作3);否则输出信息“无顶点x”;
(6)
判断图G是否是连通图,输出信息“OK!”/“NO!”;
(7)
如果选用的存储结构是顶点数组和邻接矩阵,则用顶点数组和邻接矩阵的数据信息生成图G的邻接表,即复制图G,然后再执行操作(2);反之亦然。
*(8)
自选图的其它1种操作实现之。
1.3
算术表达式求值
输入一个算术表达式,其中操作数必须为实数,运算符包括加、减、乘、除、小(圆)括号,试编写程序实现:
(1)
生成表达式二叉树;
(2)
根据表达式二叉树求表达式的值;
(3)
先序遍历表达式二叉树;
(4)
中序遍历表达式二叉树,要求恢复必要的括号;
(5)
后序遍历表达式二叉树,根据后序遍历序列(逆波兰式)求表达式的值;要求能用文件形式存放表达式二叉树,同时能从文件中读入保存的表达式二叉树。
1.4
无向网及其应用
输入若干个旅游城市信息,以及若任意两个城市间通航(车),输入票价,里程,试编写程序实现:
(1)
输入创建以城市为顶点的该无向网(要求输入的无向网是连通的);
(2)
求解连通n个城市的总里程最小方案;
(3)
任指定两个城市A、B,求从A出发到B的最佳路线(如费用最低或距离最近);
*(4)
从某城市出发,选择若干城市旅游,最后回到出发点,设计一种最佳方案;
*(5)
用图形方式显示无向网,每次选取一种方案时,在图上显示方案图。
注:*(4)、*(5)可选做,该题也可以某城市多个旅游景点为背景。
1.5.
哈希表
及其
应用
建立一个小型信息管理系统(可以是图书、人事、学生、物资、商品等任何信息管理系统)。要求:
(1)
使用哈希查找表存储信息;
(2)
实现查找、插入、删除、统计、输出等功能;
(3)
尝试使用多种哈希函数和冲突解决方法,并通过实际运行测试给出自己的评价。
二、说明和要求
1.
上述5个大型作业题任选2题完成,选作带“*”号的内容;
2.
每一种操作用C(或C++)函数实现;
3.
“大型作业报告书”
必须有下列所有内容
:
(1)
说明所完成的大型作业题目和内容;
(2)
简要说明所采用的数据结构及其存储结构(约300个字);
(3)
简要说明算法的设计思想(约800个字);
(4)
若选作第1题,分析对比未平衡化的二叉排序树和平衡化了的二叉排序树的查找效率(最好情况、最坏情况和平均情况的比较关键字的次数(约400个字);
(5)
分析时间复杂度(约200个字);
(6)
写出心得和总结(约800个字);
(7)
提交打印的程序清单,要求在关键位置加注释;
(8)
提交电子版C源程序清单;
(9)
在“报告书”首页写上班号、学号(序号)、姓名。
这么多东西哈....