数据结构试卷
B. 11 C. 12 D. 不确定
5.下面关于 B 树和 B+树的叙述中,不正确的是
A. B 树和 B+树都是平衡的多分树 B. B 树和 B+树都是可用于文件的索引结构
C. B 树和 B+树都能有效地支持顺序检索
D. B 树和 B+树都能有效地支持随机检索
二、 填空题(每空 2 分,共 20 分)
⑤
END;
END;
1.请将算法的空缺处应填入的正确内容写在下面。(10 分)
①
②
③
④
⑤
2. 设 待 排 序 的 记 录 数 n=7 , 当 排 序 码 的 初 始 排 列 顺 序 分 别 为 ( 15,25,35,45,55,65,75 ) 和 (75,65,55,45,35,25,15)时,请说出排序过程中对排序码所进行的总的比较次数分别是多少?(假定算 法中取中项的整数除法采用小数截断的方法。)(6 分)
BEGIN
FOR I:=2 TO n DO
BEGIN
temp := R[ i ];
low :=1; high := i-1;
WHILE
①
DO
BEGIN
m :=(low+high) DIV 2;
IF
②
THEN high :=m-1
ELSE
③
END;
FOR j := i-1 DOWNTO
④
DO
R[j+1] := R[j];
TYPE node=RECORD
key:integer;
info:datatype
End;
list=ARRAY[1..max] OF node;
PROCEDURE binarysort (VAR R: list; n: integer);
VAR temp :node ;
low,m,high,I,j: integer;
1.从逻辑结构看,线性表是典型的
,树是典型的
。
2.设有二维数组 A[0..9,0..19],其每个元素占两个字节,第一个元素的存储地址为 100,若按行优先
顺序存储,则元素 A[6,6]的存储地址为
,按列优顺序存储,元素 A[6,6]的存储地址
为
。
3.若按层次顺序将一棵有 n 个结点的完全二叉树的所有结点从 1 到 n 编号,那么当 i 为
2.请简述散列法存储中处理碰撞(冲突)的两类基本方法。
3.请简述负载因子的定义,为什么说负载因子是散列法存储的一个重要参数?
四、 求解下列问题(每小题 6 分,共 30 分)
1.设待排序文件的关键码为(512,275,908,677,503,765,612,897,154,170)以第一元素为分界元素进
A. 直接插入排序
B. 起泡排序 C. 快速排序 D. 直接选择排序
3.对 n 个记录的文件进行二路归并排序,总的时间代价为
A. O(nlog2n) B. O(n2) C. O(log2n) D. O(n) 4.若一棵二叉树具有 10 个度为 2 的结点,则该二叉树的度为 0 的结点个数是( )
A. 9
行快速排序(按关键码值递增顺序),请给出一趟扫描后的结果。
2.请画出下面的树所对应的二叉树。
3.从一棵空的二叉排序树开始,将以下关键码值依次插入:25,13,15,31,7,20,37,请画出插入全部完
成后的二叉排序树。
4.请画出下面带权图的一棵最小生成树。
5.对于下面的稀疏矩阵
1)画出其三元组法存储表示。
一、单项选择题(将其号码填在题干后的号码内,每小题 2 分,共 10 分)
1.一个栈的输入序列为 1,2,3,4,下面哪一个序列不可能是这个栈的输出序列?( )
A. 1,3,2,4 B. 2,3,4,1 C. 4,3,1,2 D. 3,4,2,1
2.下列排序方法中,哪一种方法的比较次数与纪录的初始排列状态无关?( )
且小
于 n 时,结点 I 的右兄弟是结点
,否则结点 i 没有右兄弟。
4.求具有最小带权外部路径长度的扩充二叉树的算法称为 算法。堆排序中建堆的方法称作 。
5.6 阶 B 树中,每个结点至多包含 个关键码,除根和叶结点外,每个结点至少包含 个关键码。
三、 简答题(每小题 6 分,共 18 分)
1.请简述散列函数在散列法存储中的作用,并举出一个散列函数的例子。
都是 pointer 类型的变量,现要将 q 所指的新结点插入表中 p 所指结点的前面(说明:p 所指的不是链
表的第一个结点)。请用 PASCAL 语句写出该插入的关键步骤。(部要求写完整的算法,只要求用几个
语句写出关键步骤。)
六、算法填空和分析(共 16 分)
下面是用 PASCAL 语言编写的二分值插入排序算法,该算法对排序码为整数的线性表进行升序排序。
2)画出其行—列法(十字链表法)存储表示。
五、算法题(6 分)
有一个链接方式存储的线性表,表中每个结点包括两个指针,其结点用 PASCAL 语言描述如下:
TYPE pointer=↑node;
node=RECORD
info:datatype;
link1,link2:pointer
END;
其中 link1 是指向结点的下一个结点的指针,link2 是指向结点的前一个结点的指针,如图所示。p 和 q