2018 江苏南京航空航天大学数据结构与操作系统考研真题数据结构部分1.(5 分)设 n*n 的矩阵 A[1..n,1..n]为三角特殊矩阵,其逆对角线以上为 0,逆对角线以及逆对角线以下的所有元素按行序压缩存储在一维数组 B[1..n*(n+1)/2]中, 根据 i、j在满足何种条件下,计算元素 Aij 的存储位置,给出推导过程。2.(10 分)给出下图所示树的二种存储结构示意图。(1)带双亲的孩子链表表示法(2)孩子兄弟表示法并说明这二种存储结构的优缺点。3.(10 分)给定 n 个村庄之间的交通图,边上的值表示这条道路的长度,现在要从这 n 个村庄中选择一个村庄建一所医院,问这所医院应建在哪个村庄,才能使离医院最远的村庄到医院的路程最短?试选择或构造一种适当的数据结构并设计一个算法,并应用该算法解答下图所示的实例,给出算法执行示意图。4.(10 分)详细解释哈希表的工作原理。以此为例,将关键字序列(51,83,43,15,62,59,74,61)存储在长度为 10 的哈希表中,使用哈希函数 H(key) = Key % 10 ,并采用链地址法解决冲突,画出哈希表示意图。 5.(10 分)设有一批需实时处理的数据元素组成集合 S,实时处理开始后,每隔一秒钟收到一个新的数据元素加入 S。现要求在每次接收一个新元素之前,找出 S 中现有的最小元素并将其输出(从 S 中删除)。试选择或构造一种适当的数据结构并设计一个算法,尽可能高效地完成上述任务。例如:S=(59,31,29,18,78,26,48,10,65,35),新接受的数据为 39,12,46….。以此为例说明算法执行过程示意图。6.(10 分)设一个带头结点的单链表 L,数据元素为整数,其中大部分为正数,少数为负数,编写函数,采用高效的算法调整链表,实现将负数结点移到链表尾部,并返回调整后链表中的第一个负数结点位置。先给出算法思想,再写相应代码。7.(10 分)设二叉树 T,用二叉链表结构存储,元素值为整数且互不相同。编写非递归函数,对给定的 2 个整数,若 2 个都不是 T 的元素,输出-2;若 1 个不是 T 的元素,输出-1;若 2 个都是 T 的元素,输出两者所在的层数的间隔数。先给出算法思想,再写出相应代码。8.(10 分)设有 N 个顶点的有向无环图 G,以邻接矩阵方式存储。编写函数,对 G 中的每个顶点进行遍历,若顶点 V 到顶点 W 存在一条有向边(弧),则要求顶点 V 在顶点 W 之前访问。先给出算法思想,再写出相应代码。操作系统部分1.填空题(2 分 x5=10 分)(1).操作系统的两大特征是( )。(2).单道系统中,假设一批作业同时到达,若想平均周转时间最短,采用( )调度算法。(3).时间片轮转调度算法中,如果时间片无穷大,该算法变成了( )调度算法。(4).在某系统中有 5 个并发进程,都需要同类资源 6 个,问该系统肯定不会发生死锁时最少资源数是( )。(5). 对于首次适应算法、最佳适应算法和循环首次适应算法,可以保留高地址部分的大空闲区的算法是( )。2.简答题(4 分 x5=20 分)(1) 画出引入挂起和激活机制后,进程状态转换图。(2) 处理机调度分为哪三级?各自的主要任务是什么?(3) 内存管理中连续分配有何缺点,为何要引入离散分配?(4) 相对于顺序文件和索引文件,索引顺序文件有何优点?如果在一个索引顺序文件中含有 N 个记录,如何设计索引顺序文件,令检索指定关键字记录的平均查找次数最少?(5) 装入时动态链接和运行时动态链接有何区别?哪种更节约内存? 3.(9 分)多道程序系统有一个 CPU 和两台独占设备,即 IO1 和 IO2,现在有 3 个优先级别从高到低的作业 J1、J2、J3 到达,它们使用资源的先后顺序和占用时间分别是:J1:IO2(60);CPU(20);IO1(60);CPU(20)J2:IO1(40);CPU(40);IO2(80)J3:CPU(60);IO1(40)假设处理机调度采用可抢占的优先级算法,设备不能抢占,忽略调度时间,时间单位为分钟。计算下列问题:(1)分别计算 3 个作业的周转时间(3 分)(2)3 个作业全部完成时 CPU 的利用率(3 分)(3)3 个作业全部完成时 IO1 的利用率(3 分)4. (9 分)...