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

2018年北京市培养单位空间应用工程与技术中心866计算机原理之数据结构考研核心题库

  摘要

一、算法设计题

1. 元素集合已存入整型数组树T 的非递归算法:CSBT(r,A)

【答案】算法如下:

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

在调用时,

T=null

f 是P 的双亲

申请结点空间

根结点

左子女

右子树根结点的值大于等于根

结点的值

算法结束

2. 在一个循环链队中只有尾指针(记为rear ,结点结构为数据域data ,指针域next) ,请给出这种队列的入队和出队操作的实现过程。

【答案】算法如下:

//rear是带头循环链队列的尾指针,本算法将元素X 插入到队尾

//申请结点空间

//将s 结点链入队尾

//rear指向新队尾

//rear是带头结点的循环链队列的尾指针

//本算法执行出队操作,成功输出队头元素;否则给出出错信息

第 2 页,共 34 页

中,试写出依次取A 中各值构造一棵二叉排序

//s指向队头元素

//队头元素出队

//空队列

3. 已知一棵高度为K 具有n 个结点的二叉树,按顺序方式存储。

(1)编写用前序遍历树中每个结点的非递归算法;

(2)编写将树中最大序号叶结点的祖先结点全部打印输出的算法。 【答案】(1)算法如下:

全局变量

递妇遍历以顺序方式存储的二叉树bt ,i 是根结点下标(初始调用时为

1)

是桟s 的栈顶指针,栈容量足够大

访问根结点,设虚结点

以0表示

右子女的下标位置入

沿左子女向下

取出栈顶元素

结束

(2)算法如下:

打印最大序号叶结点的全部袓先

找最大序号叶结点,该结点存储时在最后

的双亲结点

f

从结点c 的双亲结点直到根结点,

路径上所有结点均为祖先结点

逆序输出,最老的祖先最后输出

结束

4. 线性表中元素存放在向量A(1,... ,,1) 中,元素是整型数。试写出递归算法求出A 中的最大和最小元素。

【答案】算法如下:

第 3 页,共 34 页

//一维数组A 中存放有n 个整型数,本算法递归的求出其中的最小数和最大数

//算法结束

5. 编写算法,求二叉树的宽度。

【答案】算法如下:

求二叉树bt 的最大宽度

空二叉树宽度为

Q 是队列,元素为二叉树结点指针,容量

足够大

front 为队头指针,rear 为队尾指针

last 为同层最右结点在队列中的位置

temp 记当前层宽度,maxw 记最大宽度

根结点入队

同层元素数加

1

左子女入队

右子女入队

一层结束

指向下层最右元素

更新当前最大宽度

二、应用题

6. 设G=(V, E) 以邻接表存储,如图所示,试画出图的深度优先生成树和广度优先生成树。

第 4 页,共 34 页