(数据结构课程设计分类题目
线性表
顺序表:
1、设有一元素为整数的线性表L=(a1,a2,a3,…,an),存放在一维数组A[N]中,设计一个算法,以表中an作为参考元素,将该表分为左、右两部分,其中左半部分每个元素小于等于an,右半部分每个元素都大于an, an位于分界位置上(要求结果仍存放在A[N]中)。
2、设线性表存于A[1..size]的前num各分量中,且递增有序。请设计一个算法,将x插入到线性表的适当位置上,以保持线性表的有序性。
3、线性表(a1,a2,a3,…,an)中元素递增有序且按顺序存储于计算机内。要求设计一算法完成:
(1) 用最少时间在表中查找数值为x的元素。
(2) 若找到将其与后继元素位置相交换。
(3) 若找不到将其插入表中并使表中元素仍递增有序。
4、已知数组A[0:n-1]的元素类型为int,试设计算法将其调整为左右两个部分,左边所有元素为奇数,右边所有元素为偶数。
5、设计一个算法从顺序表L中删除所有值为x的元素
6、设计一个算法从顺序表L中删除所有值为x到y之间(x<=y)n个结点的完全二叉树存放在一维数组A[1..n]中,试据此建立一棵用二叉链表表示的二叉树 ,根由tree指向。
13、二叉树排序方法如下:
(1)将第一个数据放在树根。
(2)将随后读入的数据与树根中的数据相比较,若比树根大,则置于右子树,反之则置于左子树,建成一棵二叉树;
(3)利用中序遍历打印排序结果。
用C语言编写二叉树的排序程序。
14、二叉树结点的平衡因子(bf)定义为该结点的左子树高度与右子树高度之差。编写算法计算二叉树中各个结点的平衡因子。
15、设计算法:统计一棵二叉树中所有叶结点的数目及非叶结点的数目。
16、已知二叉树以二叉链表存储,编写算法完成:对于树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。
17、试编写算法,对一棵以孩子—兄弟链表表示的树统计叶子的个数。
18、设一棵二叉树中各结点的值互不相同,其前序序列和中序序列分别存于两个一维数组pre[1..n ]和mid[1..n ]中,试遍写算法建立该二叉树的二叉链表。
19、试设计一个算法打印出由根结点出发到达叶结点的所有路径。
20、试写出算法,求任意二叉树中第一条最长的路径长度,并输出此路径上各结点的值。
21、给定一组项及其权值,假定项都存放于二叉树的树叶结点,则具有最小带权外部路径长度的树称为huffman 树。编写构造huffman 树 的算法。
22、已知一中序线索二叉树,写一算法完成对它的中序扫描。
23、已知中序线索二叉树T右子树不空。设计算法,将S所指的结点作为T的右子树中的一个叶子结点插入进去,并使之成为T的右子树的(中序序列)第一个结点(同时要修改相应的线索关系)。
24、写出算法,求出中序线索二叉树中给定值为x的结点之后继结点,返回该后继结点的指针。线索树中结点结构为:(ltag,lc,data,rc,rtag)。其中,data存放结点的值;lc,rc为指向左、右孩子或该结点前驱或后继的指针;ltag,rtag为标志域,各值为:0,则lc,rc为指向左、右孩子的指针;值为1,则lc,rc为指向某前驱后继结点的指针
25、设后序线索树中结点构造为(Ltag,Lchild,Data,Rchild,Rtag)。其中:Ltag,Rtag 值为0时,Lchild、Rchild 分别为儿子指针;否则分别为直接前驱,直接后继的线索。请写出在后序线索树上找给定结点p^ 的直接前驱q 的算法。
图
1、设无向图G有n个顶点,m条边。试编写用邻接表存储该图的算法。(设顶点值用1~n或0~n-1编号)
2、已知有向图有n个顶点,请写算法,根据用户输入的偶对建立该有向图的邻接表。即接受用户输入的(以其中之一为0标志结束),对于每条这样的边,申请一个结点,并插入到的单链表中,如此反复,直到将图中所有边处理完毕。提示:先产生邻接表的n个头结点(其结点数值域从1到n)。
3、给出以十字链表作存储结构,建立图的算法,输入(i,j,v)其中i,j为顶点号,v为权值。
4、设有向G图有n个点(用1,2,…,n表示),e条边,写一算法建立有向图的逆邻接表。
5、设已给出图的邻接矩阵,要求将图的邻接矩阵转化为邻接表,试实现其算法。
6、编写算法,将图的邻接矩阵存储改为邻接表的存储。
7、试写一算法,判断以邻接表方式存储的有向图中是否存在由顶点Vi到顶点Vj的路径(i<>j)。
8、已知无向图采用邻接表存储方式,试写出删除边(i,j)的算法。
9、假设有向图以邻接表存储,试编写算法删除弧的算法。
10、假设有向图以十字链表存储,试编