2017年西南林业大学数据结构(同等学力加试)考研复试核心题库
● 摘要
一、应用题
1. 假定采用带头结点的单链表保存单词,当两个单词有相同的后缀时,则可共享相同的后缀存储空间。例如,“loading ”和“being ”的存储映像如图所示。
图 存储映像7K 意图
设str1和str2分别指向两个单词所在单链表的头结点,链表结点结构为符i 所在结点的位置p )。要求:
(1)给出算法的基本设计思想。 (2)根据设计思想,采用C 或【答案】
(1)算法的基本设计思想:
①分别求出strl 和str2所指的两个链表的长度m 和n ;
②将两个链表以表尾对齐:令指针p 、q 分别指向strl 和str2的头结点,若表中的第
个结点;若
则使q 指向链表中的第
表尾的长度相等。
③反复将指针p 和q 同步向后移动,并判断它们是否指向同一结点。若p 和q 指向同一结点,则该点即为所 求的共同后缀的起始位置。
(2)用C 语言算法描述如下:
两个指针同步向后移动
第 2 页,共 36 页
请设计一
个时间上尽可能高效的算法,找出由strl 和str2所指的两个链表共同后缀的起始位置(如图中字
或JA V A 语言描述算法,关键之处给出注释。
(3)说明你所设计算法的时间复杂度。
则使p 指向链
个结点,即使指针p 和q 所指的结点到
返回共同C 缀的起始点
(3)参考答案的时间复杂度为:或其中m 、n 分别为两个链表的
长度。
2. 设有正文AADBAACACCDACACAAD ,字符集为A , B , C , D , 设计一套二进制编码,使得上述正文的编码最短。
A :1, B :000,C :01,D :001。 【答案】字符A , B , C , D 出现的次数为9, 1, 5, 3。其哈夫曼编码如下:
3. 如果两个串含有相等的字符,能否说它们相等?
【答案】仅从两串含有相等的字符,不能判定两串是否相等,两串相等的充分必要条件是两串长度相等且对应位置上的字符相同(即两串串值相等)。
4. 已知有6个顶点(顶点编号为0--5)的有向带权图G , 其邻接矩阵A 为上三角矩阵,按行为主序(行优先)保存在如下的一维数组中。
要求:
(1)写出图G 的邻接矩阵A 。 (2)画出有向带权图G 。
(3)求图G 的关键路径,并计算该关键路径的长度。
【答案】(1)由题可以画出待定上三角矩阵的结构图如下(图中? 为待定元素):
可以看出,第一行至第五行主对角线上方的元素分别为5, 4, 3, 2, 1个,由此可以画出压缩存储数组中的元素所属行的情况,如下图所示:
将各元素填入各行即得邻接矩阵:
(2)根据第一步所得矩阵A 容易做出有向带权图G , 如下:
第 3 页,共 36 页
(3)下图中粗线箭头所标识的4个活动组成图G 的关键路径。
由上图容易求得图的关键路径长度为:4+5+4+3 = 16。
5. 解答问题。设有数据逻辑结构为:
(1)画出这个逻辑结构的图示。
(2)相对于关系R ,指出所有的开始结点和终端结点。 (3)分别对关系R 中的开始结点,举出一个拓扑序列的例子。 (4)分别画出该逻辑结构的正向邻接表和逆向邻接表。 【答案】 ⑴如图1所示:
图1
(2)开始结点(入度为0):(3)拓扑序列:
规则:开始结点为
或
之后,若遇多个入度为0的顶点,按顶点编号顺序选择。
(4)正向邻接表如图2所示,逆向邻接表如图3所示:
终端结点(出度为0):
第 4 页,共 36 页