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

2017年西安电子科技大学9104高级语言程序设计之数据结构(C语言版)复试仿真模拟三套题

  摘要

一、应用题

1. 在各种排序方法中,哪些是稳定的? 哪些是不稳定的? 并为每一种不稳定的排序方法举出一个不稳定的实例。

【答案】各种排序算法稳定性的归纳如图所示:

2. 为什么在倒排文件组织中,实际记录中的关键字域可删除以节约空间? 而在多重表结构中这样做为什么要牺牲性能?

【答案】因倒排文件组织中,倒排表有关键字值及同一关键字值的记录的所有物理记录号,可方便地查询具有同一关键字值的所有记录;而多重表文件中次关键字索引结构不同,删除关键字域后查询性能受到影响。

3. 将算术表达式((a+b)+c*(d+e)+f)*(g+h)转化为二叉树。

【答案】该算术表达式转化的二叉树如图所示。

4. 输入一个正整数序列(53,17,12,66,58,70,87,25,56,60),试完成下列各题。

(1)按次序构造一棵二叉排序树BS 。

(2)依此二叉排序树,如何得到一个从大到小的有序序列? (3)画出在此二叉排序树中删除“66”后的树结构。 【答案】(1)构造的二叉排序树如图1所示:

图1 二叉排序树

(2)若二叉树非空,要得到一个从大到小的有序序列可以先中序遍历右子树;再访问根结点;最后中序遍历左子树。

(3)如图2所示:

图2

5. 证明:具有n 个顶点和多于n-1条边的无向连通图G —定不是树。

【答案】具有n 个顶点n-1条边的无向连通图是自由树,即没有确定根结点的树,每个结点均可当根。若边数多于n-1条,因一条边要连接两个结点,则必因加上这一条边而使两个结点多了一条通路,即形成回路。形 成回路的连通图不再是树。

6. 快速排序的最大递归深度是多少? 最小递归深度是多少?

【答案】设待排序记录的个数为n ,则快速排序的最小递归深度为

最大递归深度n 。

7. 设将n (n >l )个整数存放到一维数组R 中。试设计一个在时间和空间两方面都尽可能高效的算法,将R 中存有的序列循环左移P (0<P <n )个位置,即将R 中的数据由

变换为

(1)给出算法的基本设计思想。 (2)根据设计思想,采用C 或

或JA V A 语言描述算法,关键之处给出注释。

要求:

(3)说明你所设计算法的时间复杂度和空间复杂度。 【答案】(1)算法的基本设计思想:先将n

个数据由然后再将数组R 中的前

(2)用C 语言算法描述如下:

(3)说明算法的复杂性:上述算法中3个Reverse 函数的的时间复杂度分别

为O

故算法的时间复杂度为

,算法的空间复杂度为0(1)。

8. 在改进了的(无回溯)字符串模式匹配中,要先求next 数组的值。下面是求nextval 值的算法。

{在模式P 中求nextval 数组的值

}

算法中第4行有

第六行中也有

两处比较语句相同。请分析说明此两处比较

原地逆置,

得到

个数和后P 个数分别原地逆置,

最终得到结果

语句的含义是什么? 分析此算法在最坏情况下的时间复杂度是多少?

【答案】第4行的

语句是测试模式串的第J 个字符是否等于第K 个字符,如是,则

语句的意义是,当第J 个字符在模式匹配中失

指针J 和K 均増加1,继续比较。第6行的