3.编写算法,将一个结点类型为Lnode的单链表按逆序链接,即若原单链表中存储元素的次序为a1,……an-1,an,则逆序链接后变为,an,an-1,……a1。
4.根据下面函数原型,编写一个递归算法,统计并返回以BT为树根指针的二叉树中所有
叶子结点的个数。
intCount(BTreeNode*BT>;
5.设A=(a1,...,am>和B=(b1,...,bn>均为顺序表,A'和B'分别为A和B中除去最大共同前缀后的子表。
若A'=B'=空表,则A=B;若A'=空表,而B'≠空表,或者两者均不为空表,且A'的首元小于B'的首元,则AB。
试写一个比较A,B大小的算法。
6.已知单链表a和b的元素按值递增有序排列,编写算法归并a和b得到新的单链表c,c的元素按值递减有序。
7.编写递归算法,对于二叉树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。
8.编写算法判别T是否为二叉排序树.
9.试写一算法,判断以邻接表方式存储的有向图中是否存在由顶点Vi到顶点Vj的路径j)。
注意:
算法中涉及的图的基本操作必须在存储结构上实现。
参考答案
一、判断题
1.√2.×3.√4.×5.√6.√7.×8.×9.×10.×
11×12√13×14√15×16√17×18×
19.× 20.×21.√22.×23.√24.√25.×26.×
27.×28.√
二、单项选择题
1.A2.B3.B4.D5.C6.A7.C8.C9.C10.B
11.A12C13. B 14. D 15. A 16. A 17. D 18. C
19. C 20. A 21. B 22. A 23. B 24. D 25. C 26. B 27 C
28.D29.B30.A31.A32.B33.D34.A35.C36.C
37.D38.C39.D40.A41.B42.C43.D44.C45.A46.A47.B48.C
三计算与算法应用题
1.[解答]
平均长度为4.
2、解:
画图<略)
深度优先搜索序列:
a,b,f,h,c,d,g,e
广度优先搜索序列:
a,b,c,f,d,e,h,g
3、解:
计算机关键码得到的散列地址
关键码
19
14
23
01
68
20
84
27
散列地址
6
1
10
1
3
7
6
1
在散列表中散列结果
0123456789101112
14
01
68
27
19
20
84
23
4.对n个关键自序列进行一趟快速排序,要进行n-1次比较,
也就是基准和其他n-1个关键字比较。
这里要求10次,而7-1+2*(3-1>=10,这就要求2趟快速排序后,算法结束。
所以,列举出来的序列,要求在做partition的时候,正好将序列平分
(1>4132657
或4137652
或4537612
或4135627.......
(2>按自己序列完成
0
1
2
3
4
5
6
7
8
9
10
11
12
13
Apr
Aug
Dec
Feb
Jan
Mar
May
June
July
Sep
Oct
Nov
(1>
(2>
(1>
(1>
(1>
(1>
(2>
(4>
(5>
(2>
(5>
(6>
(2>搜索成功的平均搜索长度为
l/12*(1+2+l+l+l+l+2+4+5+2+5+6>:
3l/12
5.答案:
(1>djbaechif(2>abdjcefhi(3>jdbeihfca
6.在这个AVL树中删除根结点时有两种方案:
【方案1】在根的左子树中沿右链走到底,用5递补根结点中原来的6,再删除5所在的结点.
【方案2】在根的右子树中沿左链走到底,用7递补根结点中原来的6,再删除7所在的结点.
7.
划分次序
划分结果
第一次
[38 24 40]46 [56 80 95 79]
第二次
24 [38 40]46 [56 80 95 79]
第三次
24 38 40 46 [56 80 9