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

2018年河北师范大学911计算机专业基础(数据结构)[专业硕士]之数据结构考研强化五套模拟题

  摘要

一、算法设计题

1. 令G=(V, E) 为一个有向无环图,编写一个给图G 中每一个顶点赋以一个整数序号的算法,并满足以下条件:若从顶点i 至顶点j 有一条弧,则应使i

【答案】算法如下:

对以邻接表存储的DAG 图g 重新编号, 使若有

记录结点的逆序序号

2. 设二叉树用二指针结构存储(可以是动态存储结构) ,元素值为整数,且元素值无重复,请编写子程序,求出以元素值等于某个给定的整数的结点为根的子树中的各个叶结点。

【答案】算法如下:

在二叉树t 中査找结点值等于x 的结

结束

统计以t 为根结点的子树的叶结点数

n0

第 2 页,共 40 页

,则编号

求各顶点的入度

. 叶结点

输出并计数

结束

:

3. 在输入数据无序的情况下,建立一个数据值为整型的递增有序的顺序存储线性表L ,且要求当输入相同数据值时,线性表中不能存在数据值相同的数据元素,试写出其算法。

顺序存储结构的线性表描述为:

线性表可能达到的最大长度};

【答案】算法如下:

//在顺序表a 中査找值为x 的元素,査找成功返回0值,否则返回查找失败时的较大下标值

//当査找失败时,low =high +

1

//结束对分査找函数

//本过程生成顺序表

L

//顺序表L 初始化

//设x =9999时退出输入

//去查找x 元素

//不同元素才插入

//插入元素x ,线性表长度增

1

//结束过程creat

第 3 页,共 40 页

4. 假设有两个按元素值递增次序排列的线性表,均以单链表形式存储。请编写算法将这两个单链表归并为一个按元素值递减次序排列的单链表,并要求利用原来两个单链表的结点存放归并后的单链表。

【答案】算法如下:

//la,lb 分别是带头结点的两个单链表的头指针,链表中的元素值按递增序排列 //本算法将两链表合并成一个按元素值递减次序排列的单链表

//pa, pb 分别是链表la 和lb 的工作指针

//la作为结果链表的头指针,先将结果链表初始化为空

//当两链表均不为空时

//将pa 的后继结点暂存于

r

//将pa 结点链于结果表中,同时逆置

//恢复pa 为当前待比较结点

//将pb 的后继结点暂存于

r

//将pb 结点链于结果表中,同时逆置

//恢复pb 为当前待比较结点

//避免再对pa 写下面的While 语句

//算法Union 结束

5. 写出一个递归算法来实现字符串逆序存储。

【答案】算法如下:

//字符串逆序存储的递归算法

r

//需要使用静态变量

//

规定

是字符串输入结束标志

//字符串逆序存储

第 4 页,共 40 页