2017年军事医学科学院微生物流行病研究所836计算机应用之数据结构考研导师圈点必考题汇编
● 摘要
一、填空题
1. 若不考虑基数排序,则在排序过程中,主要进行的两种基本操作是关键字的_____和记录的_____,
【答案】比较;移动
2. 在一个无向图的的邻接表中,若表结点的个数是m , 则图中边的条数是_____条。
【答案】m/2
【解析】对于无向图,在邻接表中,如果存在n 条边,则会有2n 个表结点。
3. 设有两个算法在同一机器上运行,其执行时闻分别为要使前者快于后者,n 至少为_____。
【答案】15
【解析】当时,而
,时,
4. 设正文串长度为n ,模式串长度为m ,则串匹配的KMP 算法的时间复杂度为_____。 【答案】
5. 设用希尔排序对数组{98,36,-9,0,47,23,1,8,10,7}进行排序,给出的步长(也称
增量序列)依次是4,2,1则排序需_____趟,写出第一趟结束后,数组中数据的排列次序_____。
【答案】3; (10,7,-9,0,47,23,1,8,98,36)
6. 空格串是指_____,其长度等于_____。
【答案】由空格字符(值32)所组成的字符串;空格个数
7. 在双向循环链表中,向P 所指的结点之后插入指针f 所指的结点,其操作是_____、_____、_____、_____。 【答案】
8. 若用n 表示图中顶点数目,则有_____条边的无向图成为完全图。
【答案】n (n-l )/2
【解析】无向完全图中任意一个顶点都和其他n-1个顶点都有一条边,即为n (n-l )。又因为每条边重复出现两次,所有无向完全图的边数为n (n-l )/2。
9. 设数组数组中任一元素均占内存48个二进制位,从首地址2000开始连续存放在主内存里,主内存字长为16位,那么
(1)存放该数组至少需要的单元数是_____;
(2)存放数组的第8列的所有元素至少需要的单元数_____;
(3)数组按列存储时,元素
【答案】270; 27; 2204
【解析】数组的元素个数为
需要
第8列有9个元素,共占因为每个元素占内存48个二进制位,即6个字节。故总个单元数。个字节,因此至少需要个单元数。由题知,每个元素占3个字节,因为主内存字长为16位,即2个字节,所以至少需要的起始地址是_____。
个单元。按列存储时,的起始地址为
10.起始地址为480,大小为8的块,其伙伴块的起始地址是_____;若块大小为32,则其伙伴块的起始地址为_____。 【答案】
【解析】起始地址为P ,大小为的内存块,其伙伴块的起始地址计算公式如下:
根据上述公式起始地址就为488。
11.假定有k 个关键字互为同义词,若用线性探测再哈希法把这k 个关键字存入哈希表中,至少要进行_____次探测。 【答案】
【解析】当该关键字发生冲突时,用线性探测不会遇到别的关键字冲突,这个时候需要探测 的次数最小。总次数为
12.在进行入栈运算时应先判别栈是否_____:在进行出栈运算时应先判别栈是否_____:当栈中元素为n 个,进行入栈运算时发生上溢,则说明该栈的最大容量为_____。为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的空间时,应将两栈的_____分别设在内存空间的两端,这样只有当_____时才产生溢出。
【答案】满;空;n ; 栈底;两栈顶指针相邻(即值之差的绝对值为1)
13.实现字符串拷贝的函数strcpy 为:
【答案】
14.当广义表中的每个元素都是原子时,广义表便成了_____。
【答案】线性表
【解析】如果每个元素都是原子,则元素不可分。此时的元素是只有一对一的关系,所以广义表变成了线性表。
15.在单链表中设置头结点的作用是_____。
【答案】方便运算
二、选择题
16.在有向图的邻接表存储结构中,顶点V 在链表中出现的次数是( )。
A. 顶点V 的度 B. 顶点V 的出度 C. 顶点V 的入度 D. 依附于顶点V 的边数
【答案】B
【解析】在有向图中,第j 个链表中的结点个数只是顶点Vi 的出度,为求入度,必须遍历整个邻接表。因此顶点V 在链表中出现的次数是顶点V 的出度。
17.进程P0和P1的共享变量定义及若进程P0和P1访问临界资源的类C 伪代码实现如下:
则并发执行进程
和时产生的情况是( )。
A. 不能保证进程互斥进入临界区,会出现“饥饿”现象
B. 不能保证进程互斥进入临界区,不会出现“饥饿”现象
C. 能保证进程互斥进入临界区,会出现“饥饿”现象
D. 能保证进程互斥进入临界区,不会出现“饥饿”现象
【答案】D
【解析】这是皮特森算法(Peterson ’S Algorithm )的实现,保证进入临界区的进程合理安全。该算法为了防止两个进程为进入临界区而无限期等待,设置变量turn , 表示不允许进入临界区的编号,每个进程在先设置自己标志后再设置turn 标志,不允许另一个进程进入,这时,再同时检测另一个进程状态标志和不允许进入标志,这样可以保证当两个进程同时要求进入临界区时只允许一个进程进入临界区。保存的是较晚的一次赋值,则较晚的进程等待,较早的进程进入。先到先人,后到等待,从而完成临界区访问的要求。
相关内容
相关标签