您的当前位置:首页正文

数据结构实验题目

2020-06-05 来源:好走旅游网
实验一:顺序表的基本操作。

编写一个完整的程序,实现顺序表的建立、插入、删除、输出等基本运算。

(1) 建立一个顺序表,含有n个数据元素。 (2) 输出顺序表及顺序表的长度。

(3) 在顺序表给定的位置i,插入一个值为x的结点。

(4) 在顺序表中删除值为x的结点或者删除给定位置i的结点。 (5) 将顺序表逆置,将结果保存到另外的顺序表中。 (6) 将顺序表按升序排序。

(7) 将两个顺序有序表A和B合并为一个有序表C。

(8) 在主函数中设计一个简单的菜单,分别测试上述算法。

综合训练:利用顺序表实现一个班级学生信息管理(数据录入、插入、删除、排序、查找等)

实验二:单链表的基本操作

编写一个完整的程序,实现单链表的建立、插入、删除、输出等基本操作。 (1)建立一个带头结点的单链表。

(2)计算单链表的长度,然后输出单链表。 (3)查找值为x的直接前驱结点q。 (4)删除值为x的结点。

(5)把单向链表中元素逆置(不允许申请新的结点空间)。

(6)利用(1)建立的链表,实现将其分解成两个链表,其中一个全部为奇数,另一个全部为偶数(尽量利用已知的存储空间)。

(7)在主函数中设计一个简单的菜单,分别测试上述算法。

综合训练:(1)利用链表实现一个班级学生信息管理(数据录入、插入、删除、排序、查找等,并能够实现将数据存储到文件中)

(2)约瑟夫环问题:设有n个人围坐在圆桌周围,从某个位置开始编号为1,2,3,…,n,坐在编号为1的位置上的人从1开始报数,数到m的人便出列;下一个(第m+1个)人又从1开始报数,数到m的人便是第二个出列的人;如此重复下去,直到最后一个人出列为止,得到一个出列的编号顺序。例如,当n=8,m=4时,若从第一个位置数起,则出列的次序为4,8,5,2,1,3,7,6。试编写程序确定出列的顺序。要求用不带头结点的单向循环链表作为存储结构模拟此过程,按照出列顺序打印出个人编号。

实验三:双向链表的基本操作

1.利用尾插法建立一个双向链表。 2.遍历双向链表。

3.实现双向链表中删除一个指定元素。

4.在非递减有序双向链表中实现插入元素e仍有序算法。 5.判断双向链表中元素是否对称若对称返回1否则返回0。 6.设元素为正整型,实现算法把所有奇数排列在偶数之前。 7.在主函数中设计一个简单的菜单调试上述算法。

实验四:栈和队列的基本操作

(1)采用链式存储实现栈的初始化、入栈、出栈操作。 (2)采用顺序存储实现栈的初始化、入栈、出栈操作。 (3)采用链式存储实现队列的初始化、入队、出队操作。 (4)采用顺序存储实现循环队列的初始化、入队、出队操作。 (5)在主函数中设计一个简单的菜单,分别测试上述算法。

综合训练:(1)利用栈实现表达式求值算法。 (2)利用栈实现迷宫求解。

(3)编写c语言程序利用队列打印一个杨辉三角形的前n行。

1 1 1 1 2 1 1 3 3 1 1 4 6 4 1

实验五:二叉树的基本操作

(1)输入字符序列,建立二叉链表。

(2)先序、中序、后序遍历二叉树:递归算法。 (3)中序遍历二叉树:非递归算法。(最好也能实现先序、后序非递归算法) (4)求二叉树的高度 。 (5)求二叉树的叶子个数。

(6)借助队列实现二叉树的层次遍历。

(7)在主函数中设计一个简单的菜单,分别调试上述算法。

综合训练:(1)为N个权值设计哈夫曼编码。

(2)试编写一个将百分制分数转换为五级分制的程序。要求其时间性能尽可能好(即平均比较次数尽可能少)。假设学生成绩的分布情况如下: 分数 0-59 60-69 70-79 80-89 90-100 比例 0.05 0.15 0.40 0.30 0.10

实验六:图的基本操作

(1)键盘输入数据,建立一个有向图的邻接表。 (2)输出该邻接表。

(3)在有向图的邻接表的基础上计算各顶点的度,并输出。 (4)以有向图的邻接表为基础实现输出它的拓扑排序序列。 (5)采用邻接表存储实现无向图的深度优先非递归遍历。 (6)采用邻接表存储实现无向图的广度优先遍历。

(7)采用邻接矩阵存储实现无向图的最小生成树的PRIM算法。

(8)采用邻接矩阵存储一个有向图,输出单源点到其它顶点的最短路径。

(9)在主函数中设计一个简单的菜单,分别调试上述算法。

综合训练:为计算机专业设计教学计划:4个学年,每学年2个学期,开设50门课程,每学期所开课程门数尽量均衡,课程的安排必须满足先修关系。

实验七:排序的基本操作

输入一组关键字序列分别实现下列排序:

(1)实现简单选择排序、直接插入排序和冒泡排序。 (2)实现希尔排序算法。 (3)实现快速排序算法。 (4)实现堆排序算法。

(5)采用链式存储实现简单选择排序、直接插入排序和冒泡排序。 (6)在主函数中设计一个简单的菜单,分别测试上述算法。

综合训练:采用几组不同数据测试各个排序算法的性能(比较次数和移动次数)。

因篇幅问题不能全部显示,请点此查看更多更全内容