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

2018年西北大学信息科学与技术学院408计算机学科专业基础综合之数据结构考研强化五套模拟题

  摘要

一、算法设计题

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

【答案】算法如下:

求二叉树bt 的最大宽度

空二叉树宽度为

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

足够大

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

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

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

根结点入队

同层元素数加

1

左子女入队

右子女入队

一层结束

指向下层最右元素

更新当前最大宽度

2. 假设一个仅包含二元运算符的算术表达式以链表形式存储在二叉树BT 中,写出计算该算术表达式值的算法。

【答案】算法如下:

以后序遍历算法求以二叉树表示的算术表达式的

.

3. 给出以十字链表作存储结构,建立图的算法,输入(i, j , V) , 其中i , j 为顶点号,v 为权值。

【答案】算法如下:

建立有向图的十字链表存储结构

假定权值为整型

建立顶点向量

当输入i 、j 、v 之一为0时,结

束算法运行

申请结点

弧结点中权值域

算法结束

4. 设给定关键字输入序列为(100,90,120,60,78,35,42,31,15) 用哈希法散列0-10的地址区间。要求设计一合理的哈希函数;冲突时用链表法解决,写出哈希算法,并构造出哈希表,在等概率查找情况下查找成功的平均查找长度是多少?

【答案】算法如下:

关键字

链指针

用链地址法解决冲突,构造哈希表,哈希函数用

初始化

求左子树表示的子表达式的值

求右子树表示的子表达式的值

输入n(本例中n=9)

个关键字按题意x 互不相同

4等插入结点链入同义词表

构造的哈希表如图所示:

图构造的哈希表

查找成功时的平均查找长度

5. 设有一头指针为L 的带有表头结点的非循环双向链表,其每个结点中除有pred(前驱指针) ,data(数据) 和next(后继指针) 域外,还有一个访问频度域freq 。在链表被启用前,其值均初始化为零。每当在链表中进行一次Locate(L,X) 运算时,令元素值为x 的结点中freq 域的值增1,并使此链表中结点保持按访问频度非增(递减) 的顺序排列,同时最近访问的结点排在频度相同的结点的最后,以便使频繁访问的结点总是靠近表头。试编写符合上述要求的Locate(L,x) 运算的算法,该运算为函数过程,返回找到结点的地址,类型为指针型。

【答案】算法如下:

//L是带头结点的按访问频度递减的双向链表

//本算法先査找数据x ,査找成功时结点的访问频度域增1,最后将该结点按频度递减插入链表中

//P为L 表的工作指针,q 为p 的前驱,用于査找插入位置

//查找值为x 的结点

("不存在所査结点\n”) ;exit(0);

//令元素值为x 的结点的freq 域加

1

//将P 结点从链表上摘下