当前位置:文档之家› 数据结构复习集美大学(包括答题纸)

数据结构复习集美大学(包括答题纸)


解:方法一创建的二叉树如下: } 方法二创建的二叉树如下:
栏 学号 线
息 姓名


班级

考 专业 装
3、(共 6 分)下面的二叉树类的方法 Height 求树
的高度,请分析在图 4 的递归展开图中填入
subTree 的树调用 Height 方法的相应的递归展开
过程;标出展开的序号;给出各树高度;在图 4 中 指出是何种遍历方法的应用。
VerticesList[i] : NULL;
}
E GetWeight (int v1, int v2) { //
return v1 != -1 && v2 != -1 ? Edge[v1][v2] :
0;
}
int GetFirstNeighbor (int v);
int GetNextNeighbor (int v, int w);
if (p->leftChild != NULL) Q.EnQueue

(p->leftChild);
考 专业 装
if (p->rightChild != NULL) Q.EnQueue 得
(p->rightChild);

三、分析题(共 32 分)
} } 解:
1、(共 5 分)二叉查找树的性能分析:已知关键码 集合 {a1, a2, a3} = {do, if, to},对应查找概

时பைடு நூலகம்

l
[
k
(3) 这 个 工 程 最]早 可 能 在 什 么 时 间 结 束 。
(1 分)

(4) 确定哪些活动活是关键活动。画出由所有关
键活动构成的图,指出动哪些活动加速可使整个工程
提前完成。(3 分) 完




P26
}
else subTree = NULL;
}
} //方法一 从文件输入 A B C # # D E # G #
#F###
void BinaryTree:: CreateBinTree(istream& in,
BinTreeNode *&BT){
SeqStack s;
BT=NULL;
BinTreeNode *p,*t;
subTree = new BinTreeNode(item);
if (subTree = = NULL) {cerr << "存
储分配错!" << endl; exit (1);}
CreateBinTree
(in,
subTree->leftChild);
CreateBinTree
(in,
subTree->rightChild);
bool InsertVertex (const T vertex);
bool InsertEdge (int v1, int v2, E cost);
bool RemoveVertex (int v);
bool RemoveEdge (int v1, int v2);
};
2、(共 4 分)画出分别调用下列两个类的方法创
P9
int k;
char ch;
in>>ch;
while (ch!=RefValue){
swith(ch){
case ’(’: s.Push(p); k=1; break;
case ’)’: s.Pop(p); break;
case ’,’: k=2; break;
default: p = new BinTreeNode(ch);
(当 m≥n 时一定能找到一个空闲单元)。拉链法是
把冲突的项目用链表串在一起的方法。假设哈希表 长度 m=13,采用除留余数法哈希函数建立如下关键 字集合的哈希表:
P18
{16,74,60,43,54,90,46,31,29,88,77},如果存在 冲突,请给出解决冲突的方法。画出最后建立的线 性探测的哈希表和拉链法的哈希表。
if (root = = NULL) return;
SeqQueue Q;
栏 学号 线
BinTreeNode *p = root;
Q.EnQueue (p);
息 姓名
while (!Q.IsEmpty ()) {
Q.DeQueue (p); cout<<p->data;
图 5 二叉树的层序遍历


班级
出现的字符有 C, A, S, T,各字符出现的频度刚 好是
W={ 2, 7, 4, 5 }
请给出①画出构造的 Huffman 树; ②给出每个字符的 Huffman 编码。
4、(共 4 分)ISAM (索引顺序存取方法文件)是 静态索引结构。典型的例子是对磁盘上的数据文件 建立盘组、柱面、磁道三级地址的多级索引。ISAM 文件用柱面索引对各个柱面进行索引。一个柱面索 引项保存该柱面上的最大关键码(最后一个记录) 以及柱面开始地址指针。如果柱面太多,可以建立 柱面索引的分块索引,即主索引。主索引不太大, 一般常驻内存。请对图 的索引基本原理做说明。
if (BT = = NULL) BT=p;
else if ( k= =1){
s.GetTop(t); t->leftChild = p;
}
else{
s.GetTop(t); t->rightChild = p;
}
}
in >> ch;
}
} // 方 法 二
从键盘输入
AP1(0B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))#
得分
阅卷 人
得 分
一、问答题(共 22 分)
1、(共 4 分)完善下面的数据的逻辑结构和物理结
P1
图 1 二叉树 叉树的二叉链表的静态链表
图2 二
解:二叉树的顺序存储如下: 二叉树的二叉链表存储如下:
P2

考 专业 装
学院
栏 学号 线
二叉树的静态链表存储填入图 2。
3、(共 4 分)有一段报文: CAST CAST SAT AT A TASA
学院
率 p1, p2, p3, 在各查找不成功间隔内查找概率
分别为 q0, q1, q2, q3。根据画出的可能的五种
P1 二P14叉查找树,求等概率查找成功的平均查找长度
3
栏 学号 线
息 姓名


ASLsucc 和不成功的平均查找长度 ASLunsucc ,分 衡二叉树插入和调整过程。 析出等概率的最优二叉查找树。 解:
5
班级

考 专业 装
学院
学院
考 专业 装


息 姓名
班级
栏 学号 线

3、(共 6 分)一棵 m 阶 B 树是一棵平衡的 m 路
搜索树, 它或者是空树, 或者是满足下列性质的 树:根结点至少有 2 个子女。除根结点以外的所
有结点 (不包括失败结点)至少有 m/2 个子女。
所有的失败结点都位于同一层。给出从空树开始加 入关键码 53、75、139、49,145、36、101 建立 3 阶 B 树的过程。 解:
句注释。
template <class T, class E>
class Graphmtx : public Graph<T, E> { //
friend istream& operator >> ( istream& in,
Graphmtx<T, E>& G); //
friend ostream& operator << (ostream& out,
息 姓名


班级

考 专业 装
学院
P3 P4
栏 学号 线
息 姓名

图 3 ISAM (索引顺序存取方法文件)静态索引结 构
5、(共 6 分)完善下面的基数排序过程。
P5 P6

班级

考 专业 装
学院
学院
考 专业 装


息 姓名
班级
栏 学号 线



二、程序题(共 21 分)
1、(共 5 分)请给下列定义的类 Graphmtx 写出语
唯一的拓扑排序为:
P2 P24 3
学院
学院
考 专业 装


息 姓名
班级
栏 学号 线

3、(共 10 分)试对图 9 所示的 AOE 网络,解答下 列问题。
(1) 求每个事件的最早开始时间 Ve[i]和最迟 开始时间 Vl[i]。 (3 分)
(2) 求每个活动的最早开始时间 e[k]和最迟开
P2 5
图 4 Height 方法的递归展开图
int BinaryTree::Height ( BinTreeNode * subTree)
const {
if (subTree == NULL) return 0;
else {
int i = Height (subTree->leftChild);
int j = Height (subTree->rightChild);
P1 7
4、(共 4 分)散列函数是一个压缩映象函数。除留 余数法的哈希函数为 h(k)=k mod p。而关键码集合 比散列表地址集合大得多。因此有可能经过散列函 数的计算,把不同的关键码映射到同一个散列地址
相关主题