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

2017年军事医学科学院实验仪器厂836计算机应用之数据结构考研仿真模拟题

  摘要

一、填空题

1. 下面描述的是一种构造最小生成树算法的基本思想。设要处理的无向图包括n

个顶点

用相邻矩阵A 表示,边的权全是正数。请在下列划线处填上正确叙述。

(1)若是边,则的值等于_____,若不是边,则的值是一个比任何边的权,矩阵的对角线元素全为0。

(2)构造最小生成树过程中,若顶点Vi 已包括进生成树,就把相邻矩阵的对角线元素A (i , i )置成若

【答案】(1) 已包括进生成树,就把矩阵元素A (i ,j )置成。 边上的权值;都大的数;(2)1; 负值;(3)为负;边 (3)算法结束时,相邻矩阵中的元素指出最小生成树的

2. 一个算法具有5个特性:_____、_____、_____、有零个或多个输入、有一个或多个输出。

【答案】有穷性;确定性;可行性

3. 文件可按其记录的类型不同而分成两类,即_____和_____文件。

【答案】操作系统文件;数据库

4. 抽象数据类型的定义仅取决于它的一组_____,而与_____无关, 即不论其内部结构如何变化,只要它的_____不变,都不影响其外部使用。

【答案】逻辑特性;在计算机内部如何表示和实现;数学特性

5. 有向图G=(V ,E ), 其中V (G )=[0, 1,2,3,4, 5}, 用三元组表示弧及弧上的权d 。 E (G )为 E (G= {<0,5, 100>, <0,2,10>, <1,2,5>,<0,4, 30>,<4, 5, 60>,<3,5, 10>,<2. 3,50>, <4, 3, 20>},则从源点0到顶点3的最短路径长度是_____,经过的中间顶点是_____。

【答案】50; 4

6. 关键码序列(Q ,H ,C ,Y ,Q ,A ,M ,S ,R ,D ,F ,X ),要按照关键码值递增的次序进行排序,若采用初始步长为4的希尔排序法,则一趟扫描的结果是_____; 若采用以第一个元素为分界元素的快速排序法,则扫描一趟的结果是_____。

【答案】(Q ,A ,C ,S ,Q ,D ,F ,×,R ,H ,M ,Y ); (F ,H ,C ,D ,a ,A ,M ,Q ,R ,S ,Y ,X )

【解析】希尔排序的基本思想是:先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。

快速排序(quicksort )的基本思想是,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。

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

【答案】

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

8. 在基于关键字比较且时间为O (nl 〇g2n )的排序中,若要求排序是稳定的,则可选用_____

,则可选用_____排序。 排序;若要求就地排序(及辅助空间为0(1))

【答案】归并;堆

9.

【答案】5

10.假设一个15阶的上三角矩阵A 按行优先顺序压缩存储在一维数组B 中,则非零元素中的存储位置k=_____。(注:矩阵元素下标从1开始)

【答案】93

【解析】对于上三角矩阵

11.当两个栈共享一存储区时,栈利用一维数组

当栈1空时,

【答案】为_____,栈2空时

, 将代入得93。 表示,两栈顶指针为则在B =_____ 为_____,栈满时为_____。 【解析】共享栈的栈底在共享存储区的两端,当栈满时栈顶相邻。

12.无用单元是指_____,例_____

【答案】用户不再使用而系统没有回收的结构和变量;

13.如某二叉树有20个叶结点,有30个结点仅有一个孩子,则该二叉树的总结点数为_____。

【答案】69

【解析】二叉树叶结点数为20, 则度为2的结点数为19, 所以总的结点数为20+19+30=69。

14.以下是用类C 语言写山的算法,该算法将以二叉链表存储的二叉树中的叶结点按从左到右的顺序链成一个带头结点的双向循环链表,链接时,结点的Lchild 域作为前链域,指向结点的直接前驱,结点的Rchild 域作为后链域,指向结点的直接后继。算法中,使用一个顺序栈stack , 栈顶

head 为双向循坏链表的头指针。 指针为top , P , t 为辅助指针,试填充算法中的空格,使算法完整。

void leafchain(BiTree Abt)

{p={BiTree)malloc (sizeof (BiTNode ));

If (!p ){print£(“OVERFLOW\n”; exit (1); }

head=p; top=0;

if (bt )

{top++; stack[top]=bt;

while (top )

{t=stack[top]; top--;

if (it->Lchild && !t->Rchild){ (1) ; (2) ; (3) ; }

else {if( (4) ){top++; stack[top]= (5) ; }

if ( (6) ){top++; stack[top]= (5) ; }

}

}

(8) ; (9) ; } }

【答案】

p->Rchild=t:t->Lchild=p:p=t: t->Rchild!=null:t->Rchild: t->Lchild!=null: t->Lchild: p->Rchild=head:head->Lchild=p

15.对n 个记录的表r[l..n]进行简单选择排序,所需进行的关键字间的比较次数为_____。

【答案】n (n-1)/2

【解析】第一次需要n-1次比较,第i 此需要n-i 此比较,所以共需要、n-l+n-2+...+l=n(n-l )/2。

二、选择题

16.设有数组数组的每个元素长度为3字节,i 的值为1到8,j 的值为1到10,数组从内

的存储首地址为( )。

【答案】B

【解析】在计算中,可以考虑按照列存放时,

址。比如顺序存放时,它是第

在内存的位置,比较容易计算元素的首地

个元素,由于首地址为BA ,

所以它的存储首地址为存首地址BA 开始顺序存放,当用以列为主存放时,元素

17.设计一个判别表达式中左、右括号是否配对出现的算法,采用( )数据结构最佳。

A. 线性表的顺序存储结构

B. 队列

C. 线性表的链式存储结构

D. 栈

【答案】D

【解析】用栈更合适,如果是左括号,进找;如果是右括号,看栈顶是不是左括号,如果是,