1、二 00 三年东南大学试卷数据结构部分:(共 45 分,占时间 50 分钟)一、试用面向对象编程语言(C或 Java)描述单链表类(class List)中的插入和删除操作。 (8 分)二、将算术表达式(a+b)+c*(d+e)+f)*(g+h) 转化为二叉树。 (7 分)三、给出一组关键字 T(12,2,16,30,8,28,4,10,20,6,18) ,写出用下列算法从小到大排序时第一趟结束时的序列:(1) 希尔排序(第一趟排序的增量为 5) (5 分)(2) 链接基数排序(基数为 10) (5 分)四、在二叉树中查找值为 X 的结点,试编写算法,打印值为 X 的结点的所有祖先,假定值为
2、X 的结点不多于 1 个。最后,试分析该算法的时间复杂性。 (10 分)五、从根到叶子的最大距离称为树的半径(radius) 。给定一个无向连通图,写一个算法以找出半径最小的生成树。 (10 分)操作系统(30 分)1、 请求页式管理是现代操作系统普遍采用的存储管理方法。在请求页式下,当执行一条指令时:(1) 若该指令访问虚存的地址是 140980(十进制) ,主存的块长为 4096(十进制) ,请问虚地址的页号和页内位移各为多少(十进制)?(3 分)(2) 请问如何判定该指令访问的页面是否在主存?(2 分)(3) 请问如何判定主存是否有空闲的物理块?(3 分)(4) 请问如何淘汰主存中的一个
3、页面?(必须给出 3 种淘汰算法并解说之) (3 分)(5) 完成页面置换后,必须重新执行发生缺页中断的那条指令。所谓“重新执行”是重取那条指令加以执行还是从那条指令的断点处开始执行?为什么?(4 分)2、读者/写者问题是经典的进程同步问题。对该问题的描述如下:一个共享文件同时提供多个读者读取,但不能同时供多个写者向它写数据。也就是说,对该共享文件,写者与写者之间应互斥,读者与写者也应互斥。请利用计数量上的 PV 操作原语,给出该问题的同步算法。(算法的定义部分 4 分 读者进程部分 7 分 写者进程部分 4 分)软件工程(23 分)一、简述 CMM(Capability Maturity M
4、odel)模型。 (13 分)二、简述 SQA(Software Quality Assurance)小组的工作内容。 (10 分)编译原理(30 分)1、 为什么有限自动机可作为词法分析的基础,而不能作为语法分析的基础?2、 对于二义文法,如何进行语法分析?试举例说明。3、 试证明下面的文法 G1 是一个 LL(1)文法G1:ETE EE|TFT TT|FPF F*F|P(E ) |a|4、请将下列程序段按 LR 语法制导翻译方法翻译成四元式序列sum=0;i=1;while(i0) dosum=sum+Ai,i;i=i+1;其中,A 数组的定义为 A1.20,1.20,按行存放,每个数组元
5、素占 1 字节空间,A1,1的地址为 addrA4、 简述活跃变量数据流方程的基本思想及其在代码优化中的作用。离散数学(共计 22 分)一、a. 下列 6 个公式中,有两个是逻辑等价的,其余的公式间都不存在逻辑等价的关系。请找出这两个逻辑等价的公式。 (本小题 3 分,不答或错答为 0 分)1. 2. 3. xB()A()B(x)(AxB()A()4. 5. 6. b. 在上列公式中还存在一些永真蕴涵关系,即两个公式用条件联结词“”连起来之后成为重言式(永真式) 。请找出这些永真蕴涵关系(用编号表示与之相对应的公式,永真蕴涵关系表示形如:ij。请注意:答对的相应加分,不答则不加分也不扣分,每答错一个扣 0.5 分) 。 (本小题 5 分)二、定义 a2b(a b)mod 2 (比如:1210) ,a4b(ab)mod 4 (比如:2431) 。请给出从代数系统到代数系统的两个同态映射,并证明它们满足同态映射的定义。 (本题 7 分)三、设 R 是非空集合上的二元关系, t(R)是 R 的传递闭包,s(R )是 R 的对称闭包,试证明:s(t(R) t(s (R ) ) 。 (本题 7 分)