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

2017年大连大学信息工程学院836数据结构考研强化模拟题

  摘要

一、填空题

1. 当两个栈共享一存储区时,栈利用一维数组当栈1空时

【答案】

为_____,栈2空时

表示,两栈顶指针为

为_____,栈满时为_____。

【解析】共享栈的栈底在共享存储区的两端,当栈满时栈顶相邻。

2. 下列程序是快速排序的非递归算法,请填写适当的语句,完成该功能。

【答案】

【解析】快速排序(quicksort )的基本思想是,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。

3. 克鲁斯卡尔算法的时间复杂度为_____,它对_____图较为适合。

【答案】O (eloge ); 边稀疏

4. —棵左子树为空的二叉树在前序线索化后,其中的空链域的个数为 _____。

【答案】2

【解析】只有根结点的做指针为空和最右边的叶结点的右指针为空。 5. 设T 是一棵结点值为整数的二叉排序树,A 是一个任意给定的整数。free_tree在下面的算法中,(T )在对二叉排序树丁进行后序遍历时释放二又排序树T 的所有结点;

先在二叉排序树T 中查找值为A 的结点,根据查找情况分别进行如下处理:(1)若找不到值为A 的结点,则返回根结点的地址(2)若找到值为A 的结点,则删除以此结点为根的子树,并释放此子树中的所有结点,若值为A 的结点是查找树的根结点,删除后变成空的二叉树,则返否则返回根结点的地址。

【答案】

6. 对单链表中元素按插入方法排序的C 语言描述算法如下,其中L 为链表头结点指针。请填充算法中标出的空白处,完成其功能。

置空链表,然后将原链表结点逐个插入到有序表中

当链表尚未到尾,p 为工作指针

查P 结点在链表中的插入位置,这时q 是工作指针

将P 结点链入链表中

【答案】(1)(2)(3)(4)

(5)是q 的前驱,u 是下个待插入结点的指针

7. 串是一种特殊的线性表,其特殊性表现在_____; 串的两种最基本的存储方式是_____、_____; 两个串相等的充分必要条件是_____。

【答案】其数据元素都是字符;顺序存储;链式存储;串的长度相等且两串中对应位置的字符也相等

8. 高度为h 的堆中,最多有_____元素,最少有_____个元素。

【答案】

当最后一层只有

【解析】当这个堆构成的是满二叉树时,元素的个数最多,

元素个数为

一个元素时,此时堆的元素个数最少,元素个数为

9. 在双向循环链表中,向P 所指的结点之后插入指针f 所指的结点,其操作是_____、_____、_____、_____。

【答案】

10.—棵有个结点的满二叉树有_____个度为1的结点、有_____个分支(非终端)结点和_____个叶子,该满二叉树的深度为_____。

【答案】

【解析】满二叉树没有度为1的结点,度为0的结点等于度为2的结点个数+1。

二、算法设计题

11.试编写在带头结点的单链表中删除(一个)最小值结点的(高效)算法。

【答案】算法如下:

12.设排序二叉树中结点的结构为下述三个域构成:

给出结点数据的值;

点的地址。设序,实现将

给出本结点的左儿子结点的地址;

给出本结点的右儿子结

域为正整数,该二叉树根结点地址为T 。现给出一个正整数x 。请编写非递归程域之值小于等于x 的结点全部删除掉。