1 (8分)
给出数组A:ARRAY[3…8,2…6]OF INTEGER;当它在内存中按行存放和按列存放时,分别写出数组元素A[i,j]的地址计算公式(设每个元素占两个存储单元)。
2(12分)
对于有向无环图
① 叙述求拓朴有序序列的步骤;
② 对于图1,写出它的四个不同的拓朴有序序列。

图1 题2图
3 (10分)
已知一棵二叉树按中序遍历时各结点被访问的次序和这棵二叉树按中序遍历时各结点被访问的次序能否唯一确定这棵二叉树的结构?为什么?若已知一棵二叉树按光序遍历时各结点被访问的次序和这棵二叉树按后序遍历时各结点被访问的次序,能否唯一确定这棵二叉树的结构?为什么?
4 (16分)
写出从图的邻接表表示转换成邻接矩阵表示的算法,用类PASCAL语言(或C语言)写成过程形式。
5 (16分)
回答下列问题:
① 什么是连通图的生成树?
② 什么是哈夫曼(Huffman)树?
③ 什么是平衡二叉树(AVL树)?
④ 什么是m阶B-树?
6 (10分)
设a,b,c,d,e五个字符的编码分别为1,2,3,4,5,并设标识符依以下次序出现:ac,bd,aa,be,ab,ad,cd,bc,ae,ce。要求用哈希(Hash)方式将它们存放具有10个位置的表中。
① 对上述关键字(标识符)构造一个哈希函数,使得发生冲突尽可能地少;
② 用线性探测再散列法解决冲突。
写出上述各关键字在表中的位置。
7 (16分)
写出在二叉排序树中删除一个结点的算法,使删除后仍为二叉排序树。设删除结点由指针力所指,其亲结点由指针p所指,并假设被删除结点是其双亲结点右孩子。用类PASCAL(或C)语言将上述算法写为过程形式。
8 (12分)
给出一组关键字:29,18,25,47,58,12,51,10,分别写出按下列各种排序方法进行排序时的变化过程:
① 归并排序 每归并一次书写一个次序。
② 快速排序 每划分一次书写一个次序
③ 堆排序 先建成一个堆,然后每从堆顶取下一个元素后,将堆调整一次。

