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

2018年北京语言大学计算机软件与理论825数据结构与程序设计之数据结构考研仿真模拟五套题

  摘要

一、填空题

1. G 是一个非连通无向图,共有28条边,则该图至少有_____个顶点。

【答案】9

【解析】求该非连通无向图的最少顶点数,则该图为一个孤立的顶点和一个完全连通图。

2. 求最短路径的Dijkstra 算法的时间复杂度为_____。

【答案】

3. 设数组址为_____。

【答案】9174;8788

【解析】设一个元素的行标为i ,列标为j 。若以行序为主存储顺序,则它的存储地址为2000+((i﹣l)*80+j ﹣

1) 2。若以列序为主存储顺序,则它的存储地址为2000+((j﹣l)*50+i ﹣l)*2。

4. 对于一个具有n 个结点的单链表,在已知的结点半p 后插入一个新结点的时间. 复杂度为_____,在给定值为x 的结点后插入一个新结点的时间复杂度为_____。

【答案】O(1);O(n)

【解析】第一种情况只需直接修改指针的指向。第二种情况必须从头结点遍历找到x 的结点。

5. 设广义表L =(( ),( )) ,则head(L)是_____tail(L)是_____L的长度是_____;深度是_____。

【答案】( );(( )) ;2;2

【解析】广义表的表头是表的第一个元素,表尾是除了第一个元素外其余的所有的元素构成的表;表的长度指表中元素的个数;表的深度指展开后括号的层数。

6. 用循环链表表示的队列长度为n ,若只设头指针,则出队和入队的时间复杂度分别是_____和_____;若只设尾指针,则出队和入队的时间复杂度分别是_____和_____。

【答案】O(1);O(n);O(1);O(1)

【解析】队列的出队操作即删除队头的元素,队列的入队操作即在队尾添加元素,循环链表只设头指针,出队时,只要把头结点的下一个结点删除就好了,入队时,要把新的结点插入队尾,

第 2 页,共 58 页

的基地址为2000,每个元素占2个存储单元,若以行序为主序顺序存

储,则元素a[45,68]的存储地址为_____;若以列序为主序顺序存储,则元素a[45,68]的存储地

必须把队列遍历,找到队尾指针,才能插入。循环队列只设尾指针,出队时只要把为指针的下一个结点或者下下个结点删除即可,入队时,只要在尾指针的后面插入新的结点,并更新尾结点即可。

7. 在单链表中设置头结点的作用是_____。

【答案】方便运算

8. —棵深度为k 的平衡二叉树, 其每个非终端结点的平衡因子均为0,则该树共有_____个结点。

【答案】

【解析】每个非终端结点都是0表示该平衡二叉树没有高度落差。也就是说它是一棵满二叉树。故结点个数为。

9. 阅读下列程序说明和程序,填充程序中的_____。

【程序说明】本程序完成将二叉树中左、右孩子交换的操作。交换的结果如下所示。 本程序采用非递归的方法,设立一个堆栈stack 存放还没有转换过的结点,它的栈顶指针为tp 。交换左、右子树的算法为:

(1)把根结点放入堆栈。

(2)当堆栈不空时,取出栈顶元素,交换它的左、右子树,并把它的左、右子树分别入栈。 (3)重复(2)直到堆栈为空时为止。

【答案】

【解析】本题主要使用堆栈完成了二叉树左右子树交换的操作。首先根结点进栈,然后判断栈是否为空,如果不为空,则取栈顶元素,交换取出结点的左右指针。并将左右指针分别进栈,重复这一操作。完成二叉树左右孩子的交换。

10.索引顺序文件既可以顺序存取,也可以 _____存取。

【答案】随机

第 3 页,共 58 页

11.假定有k 个关键字互为同义词,若用线性探测再哈希法把这k 个关键字存入哈希表中,至少要进行_____次探测。

【答案】

【解析】当该关键字发生冲突时,用线性探测不会遇到别的关键字冲突,这个时候需要探测的次数最小。总次数为。

12.VSAM 系统是由_____、_____、_____构成的。

【答案】索引集;顺序集;数据集

13.应用prim 算法求解连通网络的最小生成树问题。

(1)针对如图所示的连通网络,试按如下格式给出在构造最小生成树过程中顺序选出的各条边。(始顶点号,终顶点号,权值

)

(2)下面是Prim 算法的实现,中间有5个地方缺失,请阅读程序后将它们补上。

的值在

图的顶点数,应由用户定义

用二维数组作为邻接矩阵表示

生成树的边结点

边的起点与终点

边上的权值

最小生成树定义

从顶点rt 出发构造图G 的最小生成树T , rt 成为树的根结点

初始化最小生成树

T

依次求MST 的候选边

遍历当前候选边集合

第 4 页,共 58 页