2018年闽南师范大学计算机学院916计算机专业基础之数据结构考研强化五套模拟题
● 摘要
一、填空题
1. 对n 个元素的序列进行起泡排序时,最少的比较次数是_____。
【答案】n -1
【解析】如果序列是正序,冒泡排序第一次只要进行n -1次比较,发现没有移动元素,说明序列有序。
2.
【答案】5
3. 栈是_____的线性表,其运算遵循_____的原则。
【答案】操作受限(或限定仅在表尾进行插入和删除操作) ;后进先出
4. 根据线性表的链式存储结构中每一个结点包含的指针个数,将线性链表分成_____和_____;而又根据指针的连接方式,链表又可分成_____和_____。
【答案】单链表;双链表;(动态) 链表;静态链表
【解析】线性表的链式存储结构根据每个结点包含的指针个数分为单链表和双链表,单链表只包含一个指针,指向后续元素,双链表包括两个指针,指向前一个元素和后续元素。根据指针的连接方式,链表可分为动态链表和静态链表。静态链表的指针指向下一个元素的编号,动态链表的指针指向下一个元素的物理位置。
5. 在下面的程序段中,对X 的赋值语句的时间复杂度为_____ (表示为n 的函数) 。
【答案】1+(1+2) +(1+2+3) +…+(l+2+…+n) =n(n+1)(n+2)/6,即O(n)
【解析】当i =l 时,赋值语句就被执行了一次。当i =2时,赋值语句被执行了1+2次。当i =3时,赋值语句被执行了1+2+3次。...... 可以推出赋值语句总共被执行了1+(1+2) +(1+2+3) +…+(l+2+... +n) =n(n+1)(n+2)/6次。
6. 实现字符串拷贝的函数strcpv 为:
第 2 页,共 54 页 =_____
(_____)
【答案】s++=*t++或(*s++=*t++)!='\0‟
二、单项选择题
7. 下列选项给出的是从根分别到达两个叶节点路径上的权值序列, 能属于同一棵哈夫曼树的是( )。
A.24, 10, 5和24, 10, 7
B.24, 10, 5和24, 12, 7
C.24, 10, 10和24, 14, 11
D.24, 10, 5和24, 14, 6
【答案】D
【解析】哈夫曼树是带权路径长度最短的二叉树。由根节点出发到两个叶子节路径中, 第二个被访问的两个结点的权值要么相等, 要么和为根节点的权值, 故B 项错误。同理, 通过第三个被访问的节点排除A 项。C 项, 由两条路径可推出三个叶子节点的权值分别是:3、10和11, 而根据哈夫曼树的定义可知, 权值为3的节点应该和权值为10的结点结合, 故C 项错误。D 项, 反推出有四个叶子节点, 权值分别为:5、5、6和8, 满足哈夫曼树的条件。
8. 相对于微程序控制器,硬布线控制器的特点是( ).
A. 指令执行速度慢,指令功能的修改和扩展容易
B. 指令执行速度慢,指令功能的修改和扩展难
C. 指令执行速度快,指令功能的修改和扩展容易
D. 指令执行速度快,指令功能的修改和扩展难
【答案】D
【解析】在同样的半导体工艺条件下,硬布线(组合逻辑) 控制器的速度比微程序控制器的速度快. 这是因为硬布线控制器的速度主要取决于逻辑电路的延迟,而微程序控制器增加了一级控制存储器,执行的每条微指令都要从控制存储器中读取,影响了速度. 由于硬布线控制器一旦设计完成就很难改变,所以指令功能的修改和扩
9. 在文件的索引节点中存放直接索引指针10个, 一级二级索引指针各1个, 磁盘块大小为1KB 。每个索引指针占4个字节。若某个文件的索引节点已在内存中, 到把该文件的偏移量(按字节编址) 为1234和307400处所在的磁盘块读入内存。需访问的磁盘块个数分别是( )。
A.1, 2
B.1, 3
C.2, 3
D.2, 4
【答案】B
第 3 页,共 54 页
【解析】文件的索引结点的直接索引指针有10个, 因此直接索引的偏移量范围是0〜2559, 一级索引的偏移量范围是2560〜65791, 二级索引访问的偏移量范围是65792〜45183907。偏移量1234可以通过直接索引得到在磁盘块的地址, 因此需要一次访问, 307400需要通过二级索引查找其在磁盘的位置, 需要分别访问存放二级索引的两个索引块以及对应的数据块。
10.某CPU 主频为, 采用4级指令流水线, 每个段的执行需要1个时钟周期。假定CPU 执行了100条指令, 在其执行过程中没有发生任何流水线阻塞, 此时流水线的吞吐率为( ) A.
B.
C.
D.
【答案】C
【解析】采用4级流水线执行100条指令, 在执行过程中共用
CPU 的主频是
故答案为C 。
11.已知程序如下:
{
}
voidmain ( )
{
>
}
程序运行时使用栈来保存调用过程的信息, 自栈底到桟顶保存的信息依次对应的是( )。
A. B. C. D.
【答案】A
【解析】函数S(int n)是一个递归函数:
①当实际参数小于等于零时则返回0, 并终止递归;
②当实际参数大于零时则递归调用S(n-1), 并将S(n-1)的结果加上n 作为返回值。程序从main ( )函数开始, 首先调用main ( )函数; 在main ( )函数中调用S(1)函数时, 将main ( )函数的上下文保存到栈中, 并进入函数S(1); 由于函数S(1)的实际参数大于零, 需要调用S(0), 故将S(1)函数的上下文保存到栈中, 进入S(0); 在S(0)中, 实际参数小于等于零, 递归终止。
第 4 页,共 54 页 条指令/秒 条指令/秒 条指令/秒 条指令/秒 个时钟周期。 , 也就是说每秒钟有个时钟周期。流水线的吞吐率为
条指令/秒,