2018年北京市培养单位生命科学学院862计算机学科综合(非专业)之数据结构考研强化五套模拟题
● 摘要
一、算法设计题
1. 已知二叉树T ,试写出复制该二叉树的算法(t→T) 。
【答案】算法如下:
复制二叉树t 的非递归算法
是二叉树的结点指针的队列,容量足够大
结束本题
2. 设计将数组A[n]中所有的偶数移到奇数之前的算法。要求不增加存储空间,且时间复杂性为〇(n)。
【答案】算法如下:
//n个整数存于数组A 中,本算法将数组中所有偶数排在奇数之前
//用类C 语言编写,数组下标从0开始
//交换A[i]与
A[j]
//算法Arrange 结束
3. 有二叉排序树采用二叉链表方式存放,树中结点值各不相同,欲得到一个由大到小的结点值递减序列,简述处理方法思路,用非递归形式写出算法。
【答案】算法如下:
按递减次序输出二叉排序树结点的值
是元素为二叉树结点指针的栈,容量足够大
沿右子树向下
结束
4. 在二叉排序树的结构中,有些数据元素值可能是相同的,设计一个算法实现按递增有序打印结点的数据域,要求相同的数据元素仅输出一个,算法还应能报出最后被滤掉而未输出的数据元素个数,对如图所示的二叉排序树,输出为:10,12,13,15,18,21,27,35,42。滤掉3个元素。
图
【答案】算法如下:
递增序输出二叉排序树中结点的值,滤去重复元素
中序遍历左子树
是当前访问结点的前驱,调用本算法时初值为
null
记重复元素,调用
本算法时初值为
前驱后移
中序遍历右子树
结束
5. 设要求按
算法
是一个整数数组,其值介于1〜100之间,现
是一个记录构成的数组,
的内容调整A 中记录的次序,比如当B[l]=ll 时,则要求将A[l]的内容调整到A[ll]
中去。规定可使用的附加空间为O(1)。
【答案】算法如下:
//A是100个记录的数组,B 是整型数组,本算法利用数组B 对A 进行计数排序
//若B[i]=i 则A[i]正好在自己的位置上,则不需要调整
//B[j]和B[k]交换
//r0是数组A 的元素类型,A[j]和A[k]
交换
//完成了一个小循环,第i 个已经安排好
//算法结束
二、应用题
6. 某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 所控制部件的名称或作用是什么?
相关内容
相关标签