2015 年全国硕士研究生入学统一考试
计算机学科专业基础综合试题
一、单项选择题:
140 小题,每小题 2 分,共 80 分。下列每题给出的四个选项中,只
有一个选项符合题目要求。请在答题卡上将所选项的字母涂黑。
1.已知程序如下:
int s(int n)
{ return (n<=0) ? 0 : s(n-1) +n; }
void main() {
cout<< s(1);
}
程序运行时使用栈来保存调用过程的信息,自栈底到栈顶保存的信息一次对应的是
A . main()->S(1)->S(0) C. main()->S(0)->S(1)
B. S(0)->S(1)->main()
D . S(1)->S(0)->main()
2. 先序序列为 a,b,c,d 的不同二叉树的个数是 A.13
B.14 C.15 D.16
3.下列选项给出的是从根分别到达两个叶节点路径上的权值序列,能属于同一棵哈夫
曼树的是
A . 24, 10,5 和 24,10, 7 C.24, 10,10 和 24, 14, 11
B. 24, 10, 5 和 24, 12, 7
D. 24,10, 5 和 24, 14, 6
4.现在有一颗无重复关键字的平衡二叉树
(AVL 树) ,对其进行中序遍历可得到一个降
序序列。下列关于该平衡二叉树的叙述中,正确的是
A .根节点的度一定为 2 B.树中最小元素一定是叶节点
C.最后插入的元素一定是叶节点 D .树中最大元素一定是无左子树
5.设有向图 G=(V,E),顶点集 V={V 0,V 1,V 2,V 3} ,边集 E={ 若从顶点 V 0 开始对图进行深度优先遍历,则可能得到的不同遍历序列个数是 A.2 B.3 C.4 D.5 kruskal )算法第二次选 6.求下面带权图的最小(代价)生成树时,可能是克鲁斯卡( 中但不是普里姆( Prim)算法(从 V 4 开始)第 2 次选中的边是 A . (V1,V3) B. (V1,V4) C. (V2,V3) D. (V3,V4) 7.下列选项中,不能构成折半查找中关键字比较序列的是 A . 500, 200, 450, 180 B. 500,450, 200, 180 C.180, 500, 200, 450 D .180, 200, 500, 450 8.已知字符串 S 为 “ abaabaabacacaabaabcc模式”串. t 为 “ abaabc ”采用, KMP 算法进行 匹配,第一次出现 “失配 ”(s[i] != t[i]) 时, i=j=5, 则下次开始匹配时, i 和 j 的值分别是 A . i=1 , j=0 B. i=5 , j=0 C. i=5 , j=2 D. i=6 , j=2 9.下列排序算法中元素的移动次数和关键字的初始排列次序无关的是 A .直接插入排序 B.起泡排序 C.基数排序 D.快速排序 10.已知小根堆为 8,15,10,21,34, 16, 12,删除关键字 8 之后需重建堆,在此过 程中,关键字之间的比较数是 A.1 B.2 C.3 D.4 11.希尔排序的组内排序采用的是() A .直接插入排序 B.折半插入排序 C .快速排序 D.归并排序 12.计算机硬件能够直接执行的是() Ⅰ.机器语言程序 Ⅱ.汇编语言程序 B.仅Ⅰ Ⅱ Ⅲ.硬件描述语言程序 A .仅Ⅰ C.仅Ⅰ Ⅲ D.ⅠⅡ Ⅲ 13.由 3 个“ 1”和 5 个“ 0”组成的 8 位二进制补码,能表示的最小整数是() A . -126 B. -125 C. -32 D. -3 14.下列有关浮点数加减运算的叙述中,正确的是() Ⅰ . 对阶操作不会引起阶码上溢或下溢 Ⅱ. 右规和尾数舍入都可能引起阶码上溢 Ⅲ. 左规时可能引起阶码下溢 Ⅳ. 尾数溢出时结果不一定溢出 A .仅Ⅱ Ⅲ B.仅ⅠⅡⅣ C.仅ⅠⅢ Ⅳ D.ⅠⅡ Ⅲ Ⅳ 15.假定主存地址为 32 位,按字节编址,主存和 Cache 之间采用直接映射方式,主存 块大小为 4 个字,每字 32 位,采用回写( Write Back )方式,则能存放 的总容量的位数至少是() 4K 字数据的 Cache A . 146k B. 147K C. 148K D. 158K 16.假定编译器将赋值语句 “ x=x+3; 转”换为指令 ” add xaddt, 3,其”中 xaddt 是 x 对应的 存储单元地址,若执行该指令的计算机采用页式虚拟存储管理方式,并配有相应的 TLB , 且 Cache 使用直写( Write Through )方式,则完成该指令功能需要访问主存的次数至少是 () A . 0 B. 1 C. 2 D. 3 17.下列存储器中,在工作期间需要周期性刷新的是() A . SRAM B. SDRAM C. ROM D. FLASH 18.某计算机使用 4 体交叉存储器, 假定在存储器总线上出现的主存地址(十进制)序 列为 8005, 8006, 8007, 8008, 8001, 8002, 8003,8004 , 8000,则可能发生发生缓存冲突的地址对是() A . 8004、 8008 B. 8002、 8007 C. 8001、 8008 D. 8000、 8004 19.下列有关总线定时的叙述中,错误的是() A .异步通信方式中,全互锁协议最慢 B.异步通信方式中,非互锁协议的可靠性最差 C.同步通信方式中,同步时钟信号可由多设备提供 D.半同步通信方式中,握手信号的采样由同步时钟控制 20.若磁盘转速为 7200 转 /分,平均寻道时间为 8ms,每个磁道包含 1000 个扇区,则访 问一个扇区的平均存取时间大约是 ( ) C. 16.3ms D .20.5ms A . 8.1ms B . 12.2ms 21.在采用中断 I/O 方式控制打印输出的情况下, CPU 和打印控制接口中的 I/O 端口之 间交换的信息不可能是 ( ) B .主存地址 C.设备状态 D .控制命令 A .打印字符 22.内部异常 (内中断 ) 可分为故障 (fault) 、陷阱 (trap) 和终止 (abort) 三类。下列有关内部异常的叙述中,错误的 ( ) A .内部异常的产生与当前执行指令相关 B.内部异常的检测由 CPU 内部逻辑实现 C.内部异常的响应发生在指令执行过程中 D.内部异常处理的返回到发生异常的指令继续执行 23.处理外部中断时,应该由操作系统保存的是 ( ) A .程序计数器 (PC)的内容 B .通用寄存器的内容 C.块表 (TLB) 的内容 D .Cache 中的内容 24.假定下列指令已装入指令寄存器。 则执行时不可能导致 CPU 从用户态变为内核态 (系 统态)的是() A.DIV R0 , R1;(R0)/(R1) → R0 B.INT n ;产生软中断 C.NOT R0 ;寄存器 R0 的内容取非 D. MOV R0,addr ;把地址处的内存数据放入寄存器 R0 中 25.下列选项中会导致进程从执行态变为就绪态的事件是() A .执行 P(wait) 操作 C.启动 I/O 设备 B .申请内存失败 D .被高优先级进程抢占 26.若系统 S1 采用死锁避免方法, Ⅰ. S1 会限制用户申请资源的顺序 Ⅱ. S1 需要进行所需资源总量信息,而 S2 采用死锁检测方法,下列叙述中正确的是() S2 不需要 S2 会 C.仅Ⅰ Ⅲ Ⅲ. S1 不会给可能导致死锁的进程分配资源, A.仅Ⅰ Ⅱ 27.系统为某进程分配了 B.仅Ⅱ Ⅲ D.ⅠⅡⅢ 2,0,2,9,3,4,2,8,2,3,8,4,5 , 4 个页框,该进程已访问的页号序列为 若进程要访问的下一页的页号为 7,依据 LRU 算法,应淘汰页的页号是() C.4 D.8 A.2 B.3 28.在系统内存中设置磁盘缓冲区的主要目的是() A .减少磁盘 I/O 次数 B.减少平均寻道时间 C.提高磁盘数据可靠性 D.实现设备无关性 29.在文件的索引节点中存放直接索引指针 10 个,一级二级索引指针各 1 个,磁盘块 大小为 1KB 。每个索引指针占 4 个字节。若某个文件的索引节点已在内存中,到把该文件 需访问的磁盘块个数 的偏移量 (按字节编址) 为 1234 和 307400 处所在的磁盘块读入内存。 分别是() A.1,2 B.1,3 C.2, 3 D.2,4 30.在请求分页系统中,页面分配策略与页面置换策略不能组合使用的是() A .可变分配,全局置换 B .可变分配,局部置换 D .固定分配,局部置换 C.固定分配,全局置换 二、综合应用题: 41~47 小题,共 70 分。 41. 用单链表保存 m 个整数, 节点的结构为 (data,link) ,且 |data| head 如下 删除节点后的 head 为 要求 (1) 给出算法的基本思想 (2) 使用 c 或 c++语言,给出单链表节点的数据类型定义。 (3) 根据设计思想,采用 c 或 c++ 语言描述算法,关键之处给出注释。 (4) 说明所涉及算法的时间复杂度和空间复杂度。 42. 已知有 5 个顶点的图 G 如下图所示 请回答下列问题 (1) 写出图 G 的邻接矩阵 A( 行、列下标从 0 开始 ) 2 (2) 求 A 2,矩阵 A 中位于 0 行 3 列元素值的含义是什么? (3) 若已知具有 n(n>=2) 个顶点的邻接矩阵为 B,则 Bm(2<=m<=n) 非零元素的含义是什 么? 43. ( 13 分)某 16 位计算机主存按字节编码。 存取单位为 16 位;采用 16 位定长指令格式; R0~R3 为通用寄存器; T 为暂存器; SR CPU 采用单总线结构,主要部分如下图所示。图中 为移位寄存器,可实现直送 (mov) 、左移一位 (left) 、右移一位 (right)3 种操作,控制信号为 Srop,SR 的输出信号 Srout 控制; ALU 可实现直送 A(mova) 、 A 加 B(add)、 A 减 B(sub)、 A 与 B(and) 、 A 或 B(or) 、非 A(not) 、 A 加 1(inc)7 种操作,控制信号为 ALUop 。 请回答下列问题。 (1) 图中哪些寄存器是程序员可见的?为何要设置暂存器 T? (2) 控制信号 ALUop 和 SRop 的位数至少各是多少? (3) 控制信号 Srout 所控制邮件的名称或作用是什么? (4) 端点① ~⑨中,哪些端点须连接到控制部件的输出端? (5) 为完善单总线数据通路,需要在端点① ~⑨中相应的端点之间添加必要的连线。写出 连线的起点和终点,以正确表示数据的流动方向。 (6) 为什么二路选择器 MUX 的一个输入端是 2? 44. ( 10 分)题 43 中描述的计算机,其部分指令执行过程的控制信号如如题 44 图 a 所示。 题 44 图 a 部分指令控制信号 该机指令格式如题 44 图 b 所示,支持寄存器直接和寄存器间接两种寻址方式,寻址方式位分别为 0 和 1,通用寄存器 R0~R3 的编号分别为 0、1、 2 和 3。 题 44 图 b 指令格式 请回答下列问题。 (1) 该机的指令系统最多可定义多少条指令? 假定 inc 、shl 和 sub 指令的操作码分别为 01H、 02H 和 03H,则以下指令对应的机 (2) 器代码各是什么? ① inc R1 ② shl R2,R1 ③ sub R3, (R1),R2 ; R1+1→R1 ; (R1) << 1 →R2 ; ((R1)) –(R2) → R3 (3) 假定寄存器 X 的输入和输出控制信号分别为 Xin 和 Xout ,其值为 1 表示有效,为 0 表示无效(例如, PCout=1 表示 PC 内容送总线) ;存储器控制信号为 MEMop ,用于控制 存储器的读 (read)和写 (write) 操作。写出题 44 图 a 中标号①⑧处的控制信号或控制信号的 取值。 (4) 指令“ sub R1,R3,(R2) ”和“ inc R1 ”的执行阶段至少各需要多少个时钟周期? 45. 有 A 、B 两人通过信箱进行辩论,每人都从自己的信箱中取得对方的问题。将答案 和向对方提出的新问题组成一个邮件放入对方的邮箱中,设 A 的信箱最多放 M 个邮件, B 的信箱最多放 N 个邮件。 初始时 A 的信箱中有 x 个邮件( 0 1. A 、 B 两人操作过程: Code Begin A{ While(TRUE){ 从 A 的信箱中取出一个邮件;回答问题并提出一个新问题; 将新邮件放入 B 的信箱; } } B{ While(TRUE){ 从 B 的信箱中取出一个邮件;回答问题并提出一个新问题; 将新邮件放入 A 的信箱; } } Code End 当信箱不为空时,辩论者才能从信箱中取邮件,否则等待。 当信箱不满时,辩论者才能将新邮件放入信箱,否则等待。 请添加必要的信号量和 P、 V (或 wait, signed )操作,以实现上述过程的同步,要求写 出完整过程,并说明信号量的含义和初值。 2015 年全国硕士研究生入学统一考试 计算机学科专业基础综合试题答案解析 一、单项选择题: 1 40 小题,每小题 2 分,共 80 分。下列每题给出的四个选项中, 只有一个选项符合题目要求。请在答题卡上将所选项的字母涂黑。 1.已知程序如下: int s(int n) { return (n<=0) ? 0 : s(n-1) +n; } void main() { cout<< s(1); } 程序运行时使用栈来保存调用过程的信息,自栈底到栈顶保存的信息一次对应的是 A . main()->S(1)->S(0) B. S(0)->S(1)->main() D. main()->S(0)->S(1) D.S(1)->S(0)->main() 【参考答案】 D 【考查知识点 】栈的基本概念和函数调用的原理。 3. 先序序列为 a,b,c,d 的不同二叉树的个数是 A.13 B.14 C.15 D.16 【参考答案】 C 【考查知识点 】二叉树的基本概念。 3.下列选项给出的是从根分别到达两个叶节点路径上的权值序列,能属于同一棵哈夫 曼树的是 A . 24, 10,5 和 24,10, 7 C.24, 10,10 和 24, 14, 11 【参考答案】 C 【考查知识点 】哈夫曼树的原理。 4.现在有一颗无重复关键字的平衡二叉树 B. 24, 10, 5 和 24, 12, 7 D. 24,10, 5 和 24, 14, 6 (AVL 树) ,对其进行中序遍历可得到一个降 序序列。下列关于该平衡二叉树的叙述中,正确的是 A .根节点的度一定为 2 B.树中最小元素一定是叶节点 C.最后插入的元素一定是叶节点 D .树中最大元素一定是无左子树 【参考答案】 B 【考查知识点 】树的中序遍历和 AVL 树的基本概念。 5.设有向图 G=(V,E),顶点集 V={V 0,V 1,V 2,V 3} ,边集 E={ 若从顶点 V 0 开始对图进行深度优先遍历,则可能得到的不同遍历序列个数是 A.2 【参考答案】 D B.3 C.4 D.5 【考查知识点 】图的深度优先遍历。 6.求下面带权图的最小(代价)生成树时,可能是克鲁斯卡( kruskal )算法第二次选 中但不是普里姆( Prim)算法(从 V 4 开始)第 2 次选中的边是 A . (V1,V3) B. (V1,V4) C. (V2,V3) D. (V3,V4) 【参考答案】 A 【考查知识点 】最小生成树算法的 Prim 算法和 Kruskal 算法。 7.下列选项中,不能构成折半查找中关键字比较序列的是 A . 500, 200, 450, 180 C.180, 500, 200, 450 【参考答案】 A B. 500,450, 200, 180 D .180, 200, 500, 450 【考查知识点 】二分查找算法。 8.已知字符串 S 为 “ abaabaabacacaabaabcc, KMP 算法进行 模式”串. t 为 “ abaabc ”采用 匹配,第一次出现 “失配 ”(s[i] != t[i]) 时, i=j=5, 则下次开始匹配时, i 和 j 的值分别是 A . i=1 , j=0 B. i=5 , j=0 C. i=5 , j=2 D. i=6 , j=2 【参考答案】 C 【考查知识点 】模式匹配( KMP )算法。 9.下列排序算法中元素的移动次数和关键字的初始排列次序无关的是 A .直接插入排序 B.起泡排序 C.基数排序 D.快速排序 【参考答案】 B 【考查知识点 】几种排序算法的比较。 10.已知小根堆为 8,15,10,21,34, 16, 12,删除关键字 8 之后需重建堆,在此过 程中,关键字之间的比较数是 A.1 B.2 C.3 D.4 【参考答案】 B 【考查知识点 】最小堆的概念和最小堆的重建。 11.希尔排序的组内排序采用的是() A .直接插入排序 B.折半插入排序 C .快速排序 D.归并排序 【参考答案】 A 【考查知识点 】希尔排序基本思想是: 先将整个待排元素序列分割成若干个子序列 (由 然后依次缩减增量 相隔某个 “增量 ”的元素组成的) 再进行排序,待 分别进行直接插入排序, 整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。 12.计算机硬件能够直接执行的是() Ⅰ.机器语言程序 Ⅱ.汇编语言程序 Ⅲ.硬件描述语言程序 A .仅Ⅰ B.仅Ⅰ Ⅱ C.仅Ⅰ Ⅲ D.ⅠⅡ Ⅲ 【参考答案】 A 【考查知识点】 用汇编语言等非机器语言书写好的符号程序称源程序 将源程序翻译成目标程序,目标程序是机器语言程序。 ,运行时汇编程序要 13.由 3 个“ 1和” 5 个 “ 0组”成的 8 位二进制补码,能表示的最小整数是() A . -126 B. -125 C. -32 D. -3 【参考答案】 B 【考查知识点】 二进制的补码表示。 14.下列有关浮点数加减运算的叙述中,正确的是() Ⅰ . 对阶操作不会引起阶码上溢或下溢 Ⅱ. 右规和尾数舍入都可能引起阶码上溢 Ⅲ. 左规时可能引起阶码下溢 Ⅳ. 尾数溢出时结果不一定溢出 A .仅Ⅱ Ⅲ B.仅ⅠⅡⅣ C.仅ⅠⅢ Ⅳ D.ⅠⅡ Ⅲ Ⅳ 【参考答案】 B 【考查知识点】 浮点数的加减运算。 15.假定主存地址为 32 位,按字节编址,主存和 Cache 之间采用直接映射方式,主存 块大小为 4 个字,每字 32 位,采用回写( Write Back )方式,则能存放 4K 字数据的 Cache 的总容量的位数至少是() A . 146k B. 147K B C. 148K D. 158K 【参考答案】 【考查知识点】 Cache 和主存的映射方式。直接映射方式地址映象规则: 主存储器中 一块只能映象到 Cache 的一个特定的块中。 (1) 主存与缓存分成相同大小的数据块。 (2) 主存容量应是缓存容量的整数倍,将主存空间按缓存的容量分成区,主存中每一区的块 数与缓存的总块数相等。 (3) 主存中某区的一块存入缓存时只能存入缓存中块号相同的 位置。 16.假定编译器将赋值语句 “ x=x+3; 转”换为指令 ” add xaddt, 3,其”中 xaddt 是 x 对应的 存储单元地址,若执行该指令的计算机采用页式虚拟存储管理方式,并配有相应的 TLB , () 且 Cache 使用直写( Write Through )方式,则完成该指令功能需要访问主存的次数至少是 A . 0 B. 1 C. 2 D. 3 【参考答案】 C 【考查知识点 】 考察了页式虚拟存储器及 TLB 快表。 17.下列存储器中,在工作期间需要周期性刷新的是() A . SRAM B. SDRAM C. ROM D. FLASH 【参考答案】 B 【考查知识点 】DRAM 使用电容存储,所以必须隔一段时间刷新( refresh)一次,如果 存储单元没有被刷新,存储的信息就会丢失。 18.某计算机使用 4 体交叉存储器, 假定在存储器总线上出现的主存地址(十进制)序 列为 8005, 8006, 8007, 8008, 8001, 8002, 8003,8004 , 8000,则可能发生发生缓存冲 突的地址对是() A . 8004、 8008 【参考答案】 B. 8002、 8007 C C. 8001、 8008 D. 8000、 8004 【考查知识点 】 考察了存储器中的多模块存储器,多体并行系统。 19.下列有关总线定时的叙述中,错误的是() A .异步通信方式中,全互锁协议最慢 B.异步通信方式中,非互锁协议的可靠性最差 C.同步通信方式中,同步时钟信号可由多设备提供 D.半同步通信方式中,握手信号的采样由同步时钟控制 【参考答案】 B 【考查知识点 】考察了总线操作和定时,主要是同步定时与异步定时的定义及其特点。 20.若磁盘转速为 7200 转 /分,平均寻道时间为 8ms,每个磁道包含 1000 个扇区,则访 问一个扇区的平均存取时间大约是 ( ) C. 16.3ms D .20.5ms A . 8.1ms B . 12.2ms 【参考答案】 B 【考查知识点 】磁盘访问时间计算。 21.在采用中断 I/O 方式控制打印输出的情况下, CPU 和打印控制接口中的 I/O 端口之 间交换的信息不可能是 ( ) B .主存地址 C.设备状态 D .控制命令 A .打印字符 【参考答案】 A 【考查知识点 】程序中断 I/O 方式。 22.内部异常 (内中断 ) 可分为故障 (fault) 、陷阱 (trap) 和终止 (abort) 三类。下列有关内部 异常的叙述中,错误的 ( ) A .内部异常的产生与当前执行指令相关 B.内部异常的检测由 CPU 内部逻辑实现 C.内部异常的响应发生在指令执行过程中 D.内部异常处理的返回到发生异常的指令继续执行 【参考答案】 A 【考查知识点 】内部异常概念。 23.处理外部中断时,应该由操作系统保存的是 ( ) A .程序计数器 (PC)的内容 B .通用寄存器的内容 C.块表 (TLB) 的内容 D .Cache 中的内容 【参考答案】 A 【考查知识点 】外部中断处理过程。 24.假定下列指令已装入指令寄存器。 则执行时不可能导致 CPU 从用户态变为内核态 (系 统态)的是() A . DIV R0 , R1;(R0)/(R1) → R0 B.INT n ;产生软中断 C.NOT R0 ;寄存器 R0 的内容取非 D. MOV R0,addr ;把地址处的内存数据放入寄存器 R0 中 【参考答案】 C 【考查知识点 】 CPU 用户态和内核态概念。 25.下列选项中会导致进程从执行态变为就绪态的事件是() A .执行 P(wait) 操作 B .申请内存失败 C.启动 I/O 设备 D .被高优先级进程抢占 【参考答案】 D 【考查知识点 】进程间各状态的转化。 26.若系统 S1 采用死锁避免方法, S2 采用死锁检测方法,下列叙述中正确的是() Ⅰ. S1 会限制用户申请资源的顺序 Ⅱ. S1 需要进行所需资源总量信息,而 S2 不需要 Ⅲ. S1 不会给可能导致死锁的进程分配资源, S2 会 A.仅Ⅰ Ⅱ B.仅Ⅱ Ⅲ C.仅Ⅰ Ⅲ D.Ⅰ ⅡⅢ 【参考答案】 C 【考查知识点 】死锁相关概念。 27.系统为某进程分配了 4 个页框,该进程已访问的页号序列为 2,0,2,9,3,4,2,8,2,3,8,4,5 , 若进程要访问的下一页的页号为 7,依据 LRU 算法,应淘汰页的页号是() C.4 D.8 A.2 B.3 【参考答案】 C 【考查知识点 】 LRU 算法。 28.在系统内存中设置磁盘缓冲区的主要目的是() A .减少磁盘 I/O 次数 B.减少平均寻道时间 C.提高磁盘数据可靠性 D.实现设备无关性 【参考答案】 A 【考查知识点 】磁盘和内存速度的差异。 29.在文件的索引节点中存放直接索引指针 10 个,一级二级索引指针各 1 个,磁盘块 大小为 1KB 。每个索引指针占 4 个字节。若某个文件的索引节点已在内存中,到把该文件 需访问的磁盘块个数 的偏移量 (按字节编址) 为 1234 和 307400 处所在的磁盘块读入内存。 分别是() A.1,2 B.1,3 C.2, 3 D.2,4 【参考答案】 D 【考查知识点 】文件索引相关概念。 30.在请求分页系统中,页面分配策略与页面置换策略不能组合使用的是() A .可变分配,全局置换 B .可变分配,局部置换 D .固定分配,局部置换 C.固定分配,全局置换 【参考答案】 D 【考查知识点 】页面分配策略和页面置换策略的概念和相应的方法。 二、综合应用题: 41~47 小题,共 70 分。 41. 用单链表保存 m 个整数, 节点的结构为 (data,link) ,且 |data| 例如若给定的单链表 head 如下 删除节点后的 head 为 要求 (1) 给出算法的基本思想 (2) 使用 c 或 c++语言,给出单链表节点的数据类型定义。 (3) 根据设计思想,采用 c 或 c++ 语言描述算法,关键之处给出注释。 (4) 说明所涉及算法的时间复杂度和空间复杂度。 【参考答案】 (1) 算法思想: 定义一个大小为 N 的数组,初始化为 0.在遍历链表的同时将数组中索引值为节点的值 的绝对值的元素置 1.如果此元素已经为 1,说明此节点之前已经有与此节点的值的绝对值相 等的节点,需将此节点删除。 (2) 节点的数据结构定义如下: typedef struct Node { Int data; Struct Node * next; }Node; (3) int a[n]; // 全局数组 标志节点的绝对值的值是否出现过 void DeleteABSEqualNode(Node * head) { memset(a,0,n); // 初始化为 0 if (head == NULL) { return NULL; } Node * p = head; Node * r = head; while (p != NULL) { if (a[abs(p->data)] == 1) //如果此绝对值已经在节点值的绝对值中出现过 { // 则删除当前节点 r->next = p->next; delete p; p = r->next; } else 元素 //否则,将数组中对应的元素置 1,并将指针指向下一个 { a[abs(p->data)] = 1; r = p; p = p->next; } } return head; } (4) 只遍历一次链表,所以时间复杂度为O(n) , 因为申请大小为 n 的数组,所以空间复杂度为 O(n),( n 为节点绝对值的最大值) 。 【考查知识点】 链表的操作。 42. 已知有 5 个顶点的图 G 如下图所示 请回答下列问题 (1) 写出图 G 的邻接矩阵 A( 行、列下标从 0 开始 ) (2) 求 A 2,矩阵 A 2 中位于 0 行 3 列元素值的含义是什么? (3) 若已知具有 n(n>=2) 个顶点的邻接矩阵为 B,则 Bm(2<=m<=n) 非零元素的含义是什 么? 【参考答案】 (1)邻接矩阵为 0 1 1 0 0 1 0 0 1 1 1 0 0 1 0 0 1 1 0 1 0 1 0 3 0 ( 2) 0 1 1 2 2 1 0 2 1 1 A2= 2 1 0 1 2 2 1 1 0 1 2 1 2 1 0 0 行 3 列的元素的含义是顶点 0 到顶点 3 的最短距离为 2. i 行 j 列,如果 i==j ,则表示 i 顶点到 ( 3)B m 中非零元素的含义是:假设此顶点位于 自己的距离为 0;如果 i ≠j,则表示顶点 i 到达不了顶点 j。 【考查知识点】 邻接矩阵的概念,最短路径。 43. ( 13 分)某 16 位计算机主存按字节编码。 存取单位为 16 位;采用 16 位定长指令格式; CPU 采用单总线结构,主要部分如下图所示。图中 为移位寄存器,可实现直送 R0~R3 为通用寄存器; T 为暂存器; SR (mov) 、左移一位 (left) 、右移一位 (right)3 种操作,控制信号为 Srop,SR 的输出信号 Srout 控制; ALU 可实现直送 A(mova) 、 A 加 B(add)、 A 减 B(sub)、 A 与 B(and) 、 A 或 B(or) 、非 A(not) 、 A 加 1(inc)7 种操作,控制信号为 ALUop 。 请回答下列问题。 (1) 图中哪些寄存器是程序员可见的?为何要设置暂存器 T? (2) 控制信号 ALUop 和 SRop 的位数至少各是多少? (3) 控制信号 Srout 所控制邮件的名称或作用是什么? (4) 端点① ~⑨中,哪些端点须连接到控制部件的输出端? (5) 为完善单总线数据通路,需要在端点① ~⑨中相应的端点之间添加必要的连线。写出 连线的起点和终点,以正确表示数据的流动方向。 (6) 为什么二路选择器 MUX 的一个输入端是 2? 【参考答案】 (1) 图中程序员可见的寄存器有通用寄存器R0~R3 和程序计数器 PC;设置暂存器 T 用 于暂存数据总线发送的数据。 (2) ALUop 和 SRop 的位数分别为 3,2。 (6) 使 PC 自增 2 以获取下一条指令地址。 (3) Srout 所控制的部件作用是控制计算机运算结果的输出。 (4) 须连接到控制部件的输出端端点有①②③⑤⑧。 (5) ⑥→ ⑨,⑦ → ④。 【考查知识点 】寄存器相关概念及寄存器的操作,单总线结构 44. ( 10 分)题 43 中描述的计算机,其部分指令执行过程的控制信号如如题 44 图 a 所示。 题 44 图 a 部分指令控制信号 该机指令格式如题 44 图 b 所示,支持寄存器直接和寄存器间接两种寻址方式,寻址方 式位分别为 0 和 1,通用寄存器 R0~R3 的编号分别为 0、1、 2 和 3。 题 44 图 b 指令格式 请回答下列问题。 (1) 该机的指令系统最多可定义多少条指令? 假定 inc 、shl 和 sub 指令的操作码分别为 01H、 02H 和 03H,则以下指令对应的机 (2) 器代码各是什么? ③ inc R1 ④ shl R2,R1 ③ sub R3, (R1),R2 ; R1+1→R1 ; (R1) << 1 →R2 ; ((R1)) –(R2) → R3 (3) 假定寄存器 X 的输入和输出控制信号分别为 Xin 和 Xout ,其值为 1 表示有效,为 0 表示无效(例如, PCout=1 表示 PC 内容送总线) ;存储器控制信号为 MEMop ,用于控制 存储器的读 (read)和写 (write) 操作。写出题 44 图 a 中标号① 取值。 ⑧处的控制信号或控制信号的 (4) 指令 “ sub R1,R3,(R2)和 “”inc R1的”执行阶段至少各需要多少个时钟 周期?【参考答案】 (1) 128 (2) ① (3) ① 0280H ,② 0,② 04A8H ,③ 06EEH mov ,③ mova,④ left ,⑤ read,⑥ sub,⑦ mov ,⑧ Srout。 (4) 至少各需要 8 和 7 个时钟周期。 【考查知识点 】指令的格式与寻址方式,指令执行过程 45. 有 A 、B 两人通过信箱进行辩论,每人都从自己的信箱中取得对方的问题。将答案 和向对方提出的新问题组成一个邮件放入对方的邮箱中,设 A 的信箱最多放 M 个邮件, B 的信箱最多放 N 个邮件。 初始时 A 的信箱中有 x 个邮件( 0 1. A 、 B 两人操作过程: Code Begin A{ While(TRUE){ 从 A 的信箱中取出一个邮件;回答问题并提出一个新问题; 将新邮件放入 B 的信箱; } } B{ While(TRUE){ 从 B 的信箱中取出一个邮件; 回答问题并提出一个新问题; 将新邮件放入 A 的信箱; } } Code End 当信箱不为空时,辩论者才能从信箱中取邮件,否则等待。当信箱不满时,辩论者才能将新邮件放入信箱,否则等待。请添加必要的信号量和 P、 V (或 wait, signed )操作,以实现上述过程的同步,要求写出完整过程,并说明信号量的含义和初值。 【参考答案】 Semaphore mutexA=1; Semaphore mutexB=1; Semaphore emptyA=M; Semaphore emptyB=N; Semaphore fullA=0; Semaphore fullB=0; Code Begin A{ While(TRUE){ P(fullA); P(mutexA) Get a mail from A_mailbox ; V(mutexA); V(fullA); Answer the question and raise a question; P(emptyB); P(mutexB) send the mail to B ; V(mutexB); V(emptyB); } } B{ While(TRUE){ P(fullB); P(mutexB) Get a mail from B_mailbox ; V(mutexB); V(fullB); Answer the question and raise a question; P(emptyA); P(mutexA) send the mail to A ; V(mutexA); V(emptyA); } } Code End 【考查知识点 考察了利用信号量进程同步问题。 】 因篇幅问题不能全部显示,请点此查看更多更全内容