4
7.设无向图 G 中有 n 个顶点 e 条边,则其对应的邻接表中的表头结点和表结点的个数分别为( )。
(A) n,e (B) e,n (C) 2n,e (D) n,2e
8. 设某强连通图中有 n 个顶点,则该强连通图中至少有( )条边。
(A) n(n-1) (B) n+1 (C) n (D) n(n+1)
9.设有 5000 个待排序的记录关键字,如果需要用最快的方法选出其中最小的 10 个记录关键字,则用
下列( )方法可以达到此目的。
(A) 快速排序 (B) 堆排序 (C) 归并排序 (D) 插入排序
10.下列四种排序中( )的空间复杂度最大。
(A) 插入排序 (B) 冒泡排序 (C) 堆排序 (D) 归并排序
二、填空殖(48 分,其中最后两小题各 6 分)
1. 数据的物理结构主要包括_____________和______________两种情况。
2. 设一棵完全二叉树中有 500 个结点,则该二叉树的深度为__________;若用二叉链表作为该完全二
叉树的存储结构,则共有___________个空指针域。
3. 设输入序列为 1、2、3,则经过栈的作用后可以得到___________种不同的输出序列。
4. 设有向图 G 用邻接矩阵 A[n][n]作为存储结构,则该邻接矩阵中第 i 行上所有元素之和等于顶点 i
的________,第 i 列上所有元素之和等于顶点 i 的________。
5. 设哈夫曼树中共有 n 个结点,则该哈夫曼树中有________个度数为 1 的结点。
6. 设有向图 G 中有 n 个顶点 e 条有向边,所有的顶点入度数之和为 d,则 e 和 d 的关系为_________。
7. __________遍历二叉排序树中的结点可以得到一个递增的关键字序列(填先序、中序或后序)。
8. 设查找表中有 100 个元素,如果用二分法查找方法查找数据元素 X,则最多需要比较________次就
可以断定数据元素 X 是否在查找表中。
9. 不 论 是 顺 序 存 储 结 构 的 栈 还 是 链 式 存 储 结 构 的 栈 , 其 入 栈 和 出 栈 操 作 的 时 间 复 杂 度 均 为
____________。
10. 设有 n 个结点的完全二叉树,如果按照从自上到下、从左到右从 1 开始顺序编号,则第 i 个结点的
双亲结点编号为____________,右孩子结点的编号为___________。
11. 设一组初始记录关键字为(72,73,71,23,94,16,5),则以记录关键字 72 为基准的一趟快速排
序结果为___________________________。
12. 设有向图 G 中有向边的集合 E={<1,2>,<2,3>,<1,4>,<4,2>,<4,3>},则该图的一种拓扑
序列为____________________。
13. 下列算法实现在顺序散列表中查找值为 x 的关键字,请在下划线处填上正确的语句。
struct record{int key; int others;};
int hashsqsearch(struct record hashtable[ ],int k)
{
int i,j; j=i=k % p;
while (hashtable[j].key!=k&&hashtable[j].flag!=0){j=(____) %m; if (i==j) return(-1);}
if (_______________________ ) return(j); else return(-1);
}
14. 下列算法实现在二叉排序树上查找关键值 k,请在下划线处填上正确的语句。
typedef struct node{int key; struct node *lchild; struct node *rchild;}bitree;
bitree *bstsearch(bitree *t, int k)
{
if (t==0 ) return(0);else while (t!=0)
if (t->key==k)_____________; else if (t->key>k) t=t->lchild; else_____________;
}
数据结构试卷(四)