当前位置:问答库>考研试题

2018年北京信息科技大学经济管理学院813数据结构和C语言程序设计之数据结构考研强化五套模拟题

  摘要

一、填空题

1. 如下的算法分别是后序线索二叉树求给定结点node 的前驱结点与后继结点的算法,

请在算法空格处填上正确的语句。 设线索二叉树的结点数据结构为其中:

left 指向其左孩子,

【答案】

left 指向其前驱;,

right 指向其后继。

right 指向其右孩子,,

2. 克鲁斯卡尔算法的时间复杂度为_____,它对_____图较为适合。

【答案】

;边稀疏

3. 试利用下列栈和串的基本操作完成下述填空题。

initstack(S)置S 为空栈; push(S,X) 元素X 入栈; pop(S)出栈操作; gettop(S)返回栈顶元素; sempty(S)判栈空函数; setnull(St)置串St 为空串; length(st)返回串st 的长度;

equal(S1,S 2) 判串S 1并S 2是否相等的函数; concat(S1,S 2) 返回联接S 1和S 2之后的串;

sub(S,i ,1) 返回S 中第i 个字符; empty(st)判串空函数

FUNCinvert(pre:string ;V ARexp :string) :boolean ;

{若给定的表达式的前缀式pre 正确,本过程求得和它相应的表达式exp 并返回true ,否则exp 为空串,并返回false 。已知原表达式中不包含括弧,opset 为运算符的集合。

)

_____;_____;

_____THEN_____

IF_____THEN_____

(_____,_____);

(_____,_____);

_____

_____THEN

注意:每个空格只填一个语句。

【答案】(1)initstack(S)//栈s 初始化为空栈 (2)setnull(exp)//串exp 初始化为空串 (3)chinopset//判取出字符是否是操作符

(4)push(s,ch)//如ch 是运算符,则入操作符栈s (5)sempty(s)//判栈s 是否为空

(6)succ:=false//若读出ch 是操作数且栈为空,则按出错处理 (7)exp

(8)ch//若ch 是操作数且栈非空,则形成部分中缀表达式 (9)exp

(10)gettop(s)//取栈顶操作符 (11)pop(s)//操作符取出后,出栈

(12)sempty(s)//将pre 的最后一个字符(操作数) 加入到中缀式exp 的最后

4. 高度为4的3阶B-树中,最多有_____个关键字。

【答案】26

【解析】第4层是叶结点,1层至3层每个结点两个关键字,每个节点的关键字达到最大时,关键字最多。

5. 设数组

数组中任一元素A[i,j]均占内存48个二进制位,从首地址2000开

始连续存放在主内存里,主内存字长为16位,那么

(1)存放该数组至少需要的单元数是_____;

(2)存放数组的第8列的所有元素至少需要的单元数_____; (3)数组按列存储时,元素A[5,8]的起始地址是_____。 【答案】270;27;2204

【解析】数组的元素个数为9*10=90,因为每个元素占内存48个二进制位,即6个字节。故总需要90*6=540个字节,因为主内存字长为16位,即2个字节,所以至少需要540/2=270个单元数。第8列有9个元素,共占9*6=54个字节,因此至少需要54/2=27个单元数。由题知,每个元素占3个单元。按列存储时,A[5,8]的起始地址为2000+[(8﹣1)*9+(5﹣0)]*3=2204。

二、单项选择题

6. 在有向图G 的拓扑序列中,若顶点在顶点之前,则下列情形不可能出现的是( )。

A.G 中有弧C.G 中没有弧【答案】D

【解析】若想实现图的一个拓扑排序,需要满足的一个条件为:若顶点A 在序列中排在顶点B 的前面,则在图中不存在从顶点B 到顶点A 的路径。又因为若G 中有一条从到的路径,则在拓扑序列中不可能在前。

7.

对个权值均不相同的字符构成哈夫曼树。下列关于该哈夫曼树的叙述中, 错误的是( )。

A. 该树一定是一棵完全二叉树 B. 树中一定没有度为1的结点

C. 树中两个权值最小的结点一定是兄弟结点

D. 树中任一非叶结点的权值一定不小于下一层任一结点的权值 【答案】A

【解析】哈夫曼树为带权路径长度最小的二叉树, 但不一定是完全二叉树, 选项A 错误; 哈夫曼树中没有度为1的结点, 选项B 正确; 构造哈夫曼树时, 最先选取两个权值最小的结点作为左右子树构造一棵新的二叉树, C 正确; 哈夫曼树中任一非叶结点P 的权值为其左右子树根结点权值之和, 其权值不小于其左右子树根结点的权值, 在与结点P 的左右子树根结点处于同一层的结点中,

B.G 中有一条从到的路径 D.G 中有一条从到的路径