2018年北京师范大学生命科学学院978数据结构考研基础五套测试题
● 摘要
一、填空题
1. 实现字符串拷贝的函数strcpv 为:
(_____)
【答案】s++=*t++或(*s++=*t++)!='\0’
2. 假定查找有序表
【答案】
表
平均查找次数为。
3. 求图的最小生成树有两种算法,_____算法适合于求稀疏图的最小生成树e
【答案】克鲁斯卡尔
【解析】克鲁斯卡尔算法是一种按权值的递增次序选择合适的边来构造最小生成树的方法,这种算法中,采用堆来存放边的集合,适合于边稀疏而顶点较多的图。
4. 无用单元是指_____,例_____
【答案】用户不再使用而系统没有回收的结构和变量;
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. 数据结构中评价算法的两个重要指标是_____。
【答案】算法的时间复杂度和空间复杂度
7. 外排序的基本操作过程是_____和_____。
【答案】生成有序归并段(顺串) ;归并
中每个元素的概率相等,则进行折半查找时的平均查找长度为_____。【解析】折半查找时每个的次数如表所示:
8. 在有n 个顶点的有向图中,每个顶点的度最大可达_____。
【答案】2(n-1)
【解析】当有向图为完全连通图时每个顶点的度达到最大,出度入度均为n -1。
9. 关键码序列(Q,H ,C ,Y ,Q ,A ,M ,S ,R ,D ,F ,X) ,要按照关键码值递增的次序进行排序,若采用初始步长为4的希尔排序法,则一趟扫描的结果是_____; 若采用以第一个元素为分界元素的快速排序法,则扫描一趟的结果是_____。
【答案】(Q,A ,C ,S ,Q ,D ,F ,X ,R ,H ,M ,Y) ; (F,H ,C ,D ,a ,A ,M ,Q ,R ,S ,Y ,X)
【解析】希尔排序的基本思想是:先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。
快速排序(quick sort) 的基本思想是,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
10.有向图G=(V, E) ,其中
权d 。E(G)为
,则从源点0到顶点3的最短路径长度是_____,经过的中间顶点是_____。
【答案】50;4
11.对n 个元素的序列进行起泡排序时,最少的比较次数是_____。
【答案】n -1
【解析】如果序列是正序,冒泡排序第一次只要进行n -1次比较,发现没有移动元素,说明序列有序。
12.设数组,用三元组表示弧及弧上的数组中任一元素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。
13.设数组
址为_____。
【答案】9174;8788 的基地址为2000,每个元素占2个存储单元,若以行序为主序顺序存储,则元素a[45,68]的存储地址为_____;若以列序为主序顺序存储,则元素a[45,68]的存储地
【解析】设一个元素的行标为i ,列标为j 。若以行序为主存储顺序,则它的存储地址为2000+((i﹣l)*80+j ﹣
1) 2。若以列序为主存储顺序,则它的存储地址为2000+((j﹣l)*50+i ﹣l)*2。
14.空格串是指_____,其长度等于_____。
【答案】由空格字符(ASCII值32) 所组成的字符串;空格个数
15.—个有2001个结点的完全二叉树的高度是_____。
【答案】11
【解析】完全二叉树的高度
二、单项选择题
16.对于一个线性表既要求能够进行较快速地的插入和删除,又要求存储结构能反映数据之间的逻辑关系,则应该用( )。
A. 顺序存储方式
B. 链式存储方式
C. 散列存储方式
D. 以上均可以
【答案】B
17.设栈S 和队列Q 的初始状态均为空,元素a ,b ,c ,d ,e ,f ,g 依次进入栈S. 若每个元素出
d ,c ,f ,e ,a ,g ,. 栈后立即进入队列Q ,且7个元素出队的顺序是b ,则找S 的容量至少是( )
A.1
B.2
C.3
D.4
【答案】C
【解析】由于栈具有先进后出的特性,队列具有先进先出的特性,出队顺序即为人队顺序.. 在本题中,每个元素出栈S 后立即进入队列Q ,出栈顺序即为入队顺序,所以本题中队列的作用形同虚设,根据题意出队顺序即为出栈顺序. 根据出桟顺序可以分析各个元素进出栈的过程:第一个出栈元素为b ,表明栈内还有元素a ,b 出栈前的深度为2;第二个出栈元素为d ,栈内元素为a 和c ,d 出栈前的深度为3;c 出栈后,剩余元素为a ,c 出栈前的深度为2;f 出栈后,剩余元素为a 和e ,f 出栈前的深度为3;e 出栈后,剩余元素为a ,e 出栈前的深度为2;a 出栈后,无剩余元素,a 出栈前的深度为1;g 出栈后,无剩余元素,g 出栈前的深度为1. 所以栈容量至少是3.