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

2018年同济大学交通运输工程学院408计算机学科专业基础综合之数据结构考研基础五套测试题

  摘要

一、算法设计题

1. 已知两个线性表A , B 均以带头结点的单链表作存储结构,且表中元素按值递增有序排列。设计算法求出A 与B 的交集C ,要求C 另开辟存储空间。,并同样以元素值的递增有序的单链表形式存储。

【答案】算法如下:

//线性表A 和B 以带头结点的单链表作为存储结构。本算法求A 和B 的交集C , C 另辟空间

//pa、pb 是两链表的工作指针

//监视哨

//pa指针后移

//pb指针后移

//处理交集元素

//删除重复元素

//交集元素并入结果表

//置结果链表尾

2. 已知一具有n

个结点的二叉树的中序遍历序列与后序遍历序列分别存放于数组

中(设该二叉树各结点的数据值均不相同) 。请写一建立该二叉树的二叉链表结构的非递

归算法。该二叉链表的链结点结构为(lchild, data , rchild) ,其中data 为数据域,lchild 与rhild 分别为指向该结点左、右孩子的指针域(当孩子结点不存在时,相应指针域为空,用nil 表示) 。

【答案】算法如下:

由二叉树的中序序列IN[ ]和后序序列POST[ ]建立二叉树

第 2 页,共 30 页

分別是中序序列和后序序列第一和最后元素的下标,初始调用时

为栈,容量足够大

初始化

取出栈顶数据

在中序序列中査等于

.

根结点的值

无左子树

将建立左子树的数据入栈

无右子树

右子树数据入

结束

:

的结点

3. 已知指针P 指向带表头的中根次序线索二叉树中的某结点,试写一算法FFA(P,q) , 该算法寻找结点P 的父亲结点q 。设线索二叉树的结点结构、表头结点结构和空树结构分别为(LTAG,LLINK ,INFO , RL1NK ,RTAG) ,且规定线索树的最左下结点的LLINK 域和最右下结点的RLINKt 域指向表头。

【答案】算法如下:

在中序线索树t 上,求结点p 的双亲结点q

暂存

找P 的中序最右下的结点

顺右线索找到q 的后继(P的袓先结点

)

若后继是头结点,则转到根结点

根结点无双亲

找最右结点的过程中回找到

P

结束FFA

4. 设整数序列ai ,a2,a3,…,an ,给出求解最大值的递归程序。

【答案】算法如下:

第 3 页,共 30 页

准备到左子树中找

P

//设整数序列存于数组a 中,共有n 个,本算法求解其最大值

5. 试为二叉树写出一个建立三叉链表的算法,并在此三叉链表中删去每一个元素值为x 的结点,以及以它为根的子树,且释放相应存储空间。二叉树的三叉链表的描述为:

{二叉树根结点的指针}

【答案】算法如下:

生成三叉链表的二叉树(题目给出PASCAL 定义,下面用类C 语言书写

)

是二叉树结点指针的一维数组,容量足够大

一维数组最后元素的下标

元素或虚结点

根结点

双亲结点和子女结点用指针链上

结束

二、应用题

6. 证明任一结点个数为n 的二叉树的高度至少为0(

) 。

。解此不等式,并考虑

【答案】最低高度二叉树的特点是,除最下层结点个数不满外,其余各层的结点数都应达到各层的最大值。设n 个结点的二叉树的最低髙度是h ,则n 应满足

h 是整数,则有,即任一结点个数为n 的二叉树的高度至少为。

7. 从概念上讲,树、森林和二叉树是三种不同的数据结构,将树、森林转化为二叉树的基本目的是什么?并指出树和二叉树的主要区别。

【答案】(1)基本目的

第 4 页,共 30 页