2017年武汉轻工大学数据结构(同等学力加试)复试仿真模拟三套题
● 摘要
一、应用题
1. 对给定文件(28,07,39,10,65,14,61,17,50,21)选择第一个元素28进行划分,写出其快速排序第一遍的排序过程。
【答案】快速排序的思想如下:首先将待排序记录序列中的所有记录作为当前待排序区域,
,凡其关键字不大干枢轴的记录均移动至该记录之前,以第一个记录的关键字作为枢轴(或支点)
凡关键字不小于枢轴的记录均移动至该记录之后。致使一趟排序之后,记录的无序序
割成两部分:和和
且
将分然后再递归地将进行快速排序。快速排序在记录有序时蜕变为起泡排序,可用“三者取中”法改善其性能,避免最坏情况的出现。本题解答如下:
初始序列:[28],07,39,10,65,14,61,17,50,21
21移动:21,07,39,10,65,14,61,17,50,[]
39移动:21,07,[],10,65,14,61,17,50,39
17移动:21,07,17,10,65,14,61,[],50,39
65移动:21,07,17,10,[],14,61,65,50,39
14移动:21,07,17,10,14,[28],61,65,50,39
2. 已知有6个顶点(顶点编号为0--5)的有向带权图G , 其邻接矩阵A 为上三角矩阵,按行为主序(行优先)保存在如下的一维数组中。
要求:
(1)写出图G 的邻接矩阵A 。
(2)画出有向带权图G 。
(3)求图G 的关键路径,并计算该关键路径的长度。
【答案】(1)由题可以画出待定上三角矩阵的结构图如下(图中? 为待定元素):
可以看出,第一行至第五行主对角线上方的元素分别为5, 4, 3, 2, 1个,由此可以画出压缩存储数组中的元素所属行的情况,如下图所示:
将各元素填入各行即得邻接矩阵:
(2)根据第一步所得矩阵A 容易做出有向带权图G , 如下:
(3)下图中粗线箭头所标识的4个活动组成图G 的关键路径。
由上图容易求得图的关键路径长度为:4+5+4+3 = 16。
3. 设某计算机的逻辑地址空间和物理地址空间均为64KB , 按字节编址。若某进程最多需要6页(Page )数据存储空间,页的大小为1KB , 操作系统采用固定分配局部置换策略为此进程分配4个页框(PageFrame )。在时刻260前的该进程访问情况如下表所示(访问位即使用位)。
当该进程执行到时刻260时,要访问的逻辑地址为17CAH 的数据,请回答下列问题:
(1)该逻辑地址对应的页号是多少?
(2)若采用先进先出(FIFO )置换算法,该逻辑地址对应的物理地址是多少? 要求给出计算过程。
(3)若采用时钟(CLOCK )置换算法,该逻辑地址对应的物理地址是多少? 要求给出计算过程。(设搜索下一页的指针沿顺时针方向移动,且当前指向2号页框,如图所示)
图
【答案】(1)由题可知计算机的逻辑地址空间和物理地址空间均为64KB=216B, 按字节编址,并且页的大小为IK=210, 故逻辑地址和物理地址的地址格式均为:
地址17CA=0001011111001010B,故可知其逻辑页号为000101B=5。
(2)根据FIFO 算法,需要替换出最早装入的页,故需置换0号页,将5号页装入7号页框中,所以物理地址为0001111111001010B=1FCAH。
(3)根据CLOCK 算法,如果当前指针所指页框的使用位为0, 则替换该页,否则将使用位清零,并将指针指向下一个页框,继续查找。由题可知,将从2号页框开始,前4次查找页框号的顺序为2、4、7、9, 并将对应页框的使用位清零。在第5次查找中,指针指向2号页框,因2号页框的使用位已经为0, 故将2号页框的页将5号装入2号页框,并将其对应使用位设置为1, 所以对应的物理地址为0000101111001010B=0BCAH。
4. 假设以S 和X 分别表示入栈和出栈操作,则对初态和终态均为空的栈操作可由S 和X 生成的序列表示(如SXSX )。
(1)试指出判别给定序列是否合法的一般规则;
(2)两个不同合法序列(对同一输入序列)能否得到相同的输出元素序列? 如能得到,请举列说明。
【答案】(1)通常有两条规则。第一是给定序列中S 的个数和X 的个数相等;第二是从给定序列的开始,到给定序列中的任一位置,S 的个数要大于或等于X 的个数。
(2)可以得到相同的输出元素序列。例如,输入元素为A , B , C , 则两个输入的合法序列ABC 和BAC 均可得到输出元素序列ABC 。对于合法序列ABC ,使用SXSXSX 操作序列;对于合法序列BAC ,使用SSXXSX 操作序列。
5. 如果输入序列为123456, 试问能否通过栈结构得到以下两个序列:435612和135426; 请说明为什么不能或如何才能得到。
【答案】输入序列为123456, 不能得出435612, 其理由是,输出序列最后两元素是12, 前面4个元素(4356)得到后,栈中元素剩12, 且2在栈顶,栈底元素1不可能在栈顶元素2之前出栈。得到135426的过程如下:1入栈并出栈,得到部分输出序列1; 然后2和3入找,3出栈,部分输出序列变为13; 接着4和5入栈,5、4和2依次出栈,部分输出序列变为13542; 最后6入栈并出栈,得到最终结果135426。