散列

设散列表 H[] 容量 M=7,采用除留余数法(H(key) = key % M)确定地址,采用单向平方探测法解决冲突,即 H1 = (H(key) + 1^2 ) % M,H2 = (H(key) + 2^2 ) % M,……,Hk = (H(key) + k^2 ) % M,……。 现从空表开始依次插入关键码 {2010, 7, 4, 0},试给出生成的散列表。

H[]:     0      1      2      3      4      5      6
key:     7     2010    0             4 

排序

对以下整型向量做就地堆排序,写出 Floyd 建堆法,以及各次迭代之后向量的内容。

rank :   0     1     2
vec[]:  16   2011    6

heap: 2011 16 6 iter1: 16 6 BBFABBA6;">2011 iter2: 6 BBFABBA6;">16 2011 iter3: BBFABBA6;">6 16 2011

图遍历

某有向图的邻接矩阵如下,现从顶点 1 出发做 DFS 遍历,遇多顶点歧义时编号小者优先。 试在右侧标出各边的分类结果(树边 T,前向边 F,后向边 B,跨边 C)

0  1  2  3  4
1     T  T  F
2           T
3           C
4     B

最小生成树

某无向网络及其邻接矩阵的上三角部分如下,现从顶点 A 出发采用 Prim 算法构造最小生成树,试在下三角区域标出树边及其被选用的次序。遇多边歧义时,按边端点合成数的字典序小者优先。

∞  A  B  C  D  E
A     9  1  7  7
B        7     5
C           7
D              3
E

∞  A  B  C  D  E
A     9  1  7  7
B        7     5
C  1        7
D  7           3
E     5        

注意:其中在加入第二条边时,有 4 条边的优先级数均为 7,对应的合成数为 (7, A, D) < (7, A, E) < (7, C, B) < (7, C, D) 故 (A, D) 被优先引入

最短路径树

某无向网络及其邻接矩阵的上三角部分如下。现从顶点 A 出发采用 Dijkstra 算法构造最短路径生成树,试在下三角区域标出树边及其被选用的次序。遇多边歧义时,按边端点合成数的字典序小者优先。

∞  A  B  C  D  E
A     5  8  4 17
B        8     3
C          11
D              5
E

∞  A  B  C  D  E
A     5  8  4 17
B  5     8     3
C  8       11
D  4           5
E     3

注意:在加入第三条边时,有两条边的优先级数均为 8,此时合成数为 (8, A, C)<(8, B, E),故选择 (A, C)。