当前位置:问答库>考研试题

2018年贵州财经大学信息学院408计算机学科专业基础综合之数据结构考研强化五套模拟题

  摘要

一、算法设计题

1. 己知两个定长数组,它们分别存放两个非降序有序序列,请编写程序把第二个数组序列中的数逐个插入到前一个数组序列中,完成后两个数组中的数分别有序(非降序) 并且第一数组中所有的数都不大于第二个数组中的任意一个数。注意,不能另开辟数组,也不能对任意一个数组进行排序操作。

例如:

第一个数组为:4,12,28 第二个数组为:1,7,9,29,45 输出结果为:

第一个数组

第二个数组

【答案】算法如下:

//A和B 是各有m 个和n 个整数的非降序数组,本算法将B 数组元素逐个插入到A 中 //使A 中各元素均不大于B 中各元素,且两数组仍保持非降序排列

.

" 交换A[m﹣1]和

B[0]

//寻找A[m﹣1]的插入位置

//寻找B[0]的插入位置

算法结束

2. 假设K1,... ,Kn 是n 个关键词,试解答:

(1)试用二叉查找树的插入算法建立一棵二叉查找树,即当关键词的插入次序为K1,K2,…,Kn 时,用算法建立一棵以llink —rlink 链接表示的二叉查找树。

(2)设计一个算法,打印出该二叉查找树的嵌套括号表示结构。例如,K1=B,K2=A,K3=D,K4=C,K5=E,则用二叉查找树的插入算法建立如图所示的二叉查找树。

该二叉查找树的嵌套括号表示结构为:B(A,D(C,E)) 。 【答案】(1)算法如下:

在二叉排序树bst 上査找值为K 的结点,返回其双亲结点指针

f

以存储在数组R 中的n 个关键字,建立一棵初始为空的二叉排序树

不再插入相同值结点

.

申请结点空间

根结点

左子女

右子女

结束算法 (2)算法如下:

以嵌套括号表示结构打印二叉排序树

打印根结点值

左子女和右子女中至少有一个不空

输出左栝号

输出左子树的嵌套括号表示

若右子树不空,输出逗号

输出右子树的嵌套括号表示

输出右括号

3. 编写算法,将自然数1〜n 2按“蛇形”填nxn 矩阵中。例(1〜42) 如图所示(用程序实现) 。

【答案】算法如下:

//将自然数

,按" 蛇形M 填入n 阶方阵A 中

//i,j 是矩阵元素的下标,k 是要填入的自然数

//从右上向左下填数

//副对角线及以上部分的新i ,j 坐标

//副对角线以下的新的i ,j 坐标

//从左下向右上

//最外层

while

4. 写出一趟快速排序算法。

【答案】算法如下:

一趟快速排序算法,枢轴记录到位,并返回其所在位置