2017年大连海事大学X01数据结构复试仿真模拟三套题
● 摘要
一、应用题
1. 设目标为模式为
(1)计算模式p 的nextval 函数值;
(2)不写出算法,只画出利用KMP 算法进行模式匹配时每一趟的匹配过程。
【答案】(1)P 的nextval 函数值为0110132(P 的next 函数值为0111232)。
(2)利用KMP (改进的nextval )算法,每趟匹配过程如下:
第一趟匹配:
abcab (i=5, j=5)
第二趟匹配:
abc (i=7,j=3)
第三趟匹配:
a (i=7,j=l)
第四趟匹配:
(成功)abcabaa (i=15,j=8)
2. 文件存储结构的基本形式有哪些? 一个文件采用何种存储结构应考虑哪些因素?
【答案】文件的基本组织方式有顺序组织、索引组织、散列组织和链组织,常用的结构有顺序结构、索引结构、散列结构。
(1)顺序结构,相应文件为顺序文件,其记录按存入文件的先后次序顺序存放。顺序文传本质上就是顺序表。若逻辑上相邻的两个记录在存储位置上相邻,则为连续文件;若记录之间以指针相链接,则称为串联文件。顺序文件只能顺序存取,要更新某个记录,必须复制整个文件。顺序文件连续存取的速度快,主要适用于顺序存取,批量修改的情况。
(2)带索引的结构,相应文件为索引文件。索引文件包括索引表和数据表,索引表中的索引项包括数据表中数据的关键字和相应地址,索引表有序,其物理顺序体现了文件的逻辑次序,实现了文件的线性结构。索引文件只能是磁盘文件,既能顺序存取,又能随机存取。
(3)散列结构,也称计算寻址结构,相应文件称为散列文件,其记录是根据关键字值经哈希函数计算确定其地址,存取速度快,不需索引,节省存储空间。不能顺序存取,只能随机存取。
文件采用何种存储结构应综合考虑各种因素,如:存储介质类型、记录的类型、大小和关键字的数目以及对文件作何种操作。
3. 请写出应填入下列叙述中( )内的正确答案。
某一工程作业的网络图如图1所示,其中箭头表示作业,箭头边的数字表示完成作业所需的天
第 2 页,共 21 页
数。箭头前后的圆圈表示事件,圆圈中的数字表示事件的编号。用事件编号的序列(例如0-2-7-9-11)
表示进行作业的路径。
完成此工程的关键路径是(A )完成此工程所需的最少天数为(B )天,此工程中具有最大充
,充裕天数是(D )裕天数的事件是(C )。关键路径上的事件的充裕天数是(E )。
图1
【答案】A. 0-2-6-9-11; B. 20; C.事件顶点1、5和7各充裕两天;D. 4天;E. 0
4. 将下列出三棵树组成的森林转换为二叉树(只要求给出转换结果)。
图1
【答案】森林转换为二叉树分以下三步:
(1)连线(将兄弟结点相连,各树的根看作兄弟)。
(2)切线(保留最左边子女为独生子女,将其他子女分支切掉)。
(3)旋转(以最左边树的根为轴. 顺时针向下旋转45度)。
所以由上面三棵树转换得到的二叉树如图2所示:
第 3 页,共 21 页
图2
5. 试比较顺序文件、索引非顺序文件、索引顺序文件、哈希文件的存储代价,检索、插入、删除记录时的优点和缺点。
【答案】(1)顺序文件只能顺序查找,优点是批量检索速度快,不适于单个记录的检索。顺序文件不能像顺序表那样插入、删除和修改,因文件中的记录不能象向量空间中的元素那样“移动”,只能通过复制整个文件实现上述操作。
(2)索引非顺序文件适合随机存取,不适合顺序存取,因主关键字未排序,若顺序存取会引起磁头频繁移动。索引顺序文件是最常用的文件组织,因主文件有序,既可顺序存取也可随机存取。索引非顺序文件是稠密索引,可以“预查找”,索引顺序文件是稀疏索引,不能“预查找”,但由于索引占空间较少,管理要求低,提高了索引的查找速度。
(3)散列文件也称直接存取文件,根据关键字的哈希函数值和处理冲突的方法,将记录散列到外存上。这种文件组织只适用于像磁盘那样的直接存取设备,其优点是文件随机存放,记录不必排序,插入、删除方便,存取速度快,无需索引区,节省存储空间。缺点是散列文件不能顺序存取,且只限于简单查询。经多次插入、删除后,文件结构不合理,需重组文件,这很费时。
6. 假设以S 和X 分别表示入栈和出栈操作,则对初态和终态均为空的栈操作可由S 和X 生成的序列表示(如SXSX )。
(1)试指出判别给定序列是否合法的一般规则;
(2)两个不同合法序列(对同一输入序列)能否得到相同的输出元素序列? 如能得到,请举列说明。
【答案】(1)通常有两条规则。第一是给定序列中S 的个数和X 的个数相等;第二是从给定序列的开始,到给定序列中的任一位置,S 的个数要大于或等于X 的个数。
(2)可以得到相同的输出元素序列。例如,输入元素为A , B , C , 则两个输入的合法序列ABC 和BAC 均可得到输出元素序列ABC 。对于合法序列ABC ,使用SXSXSX 操作序列;对于合法序列BAC ,使用SSXXSX 操作序列。
7. 设度为m 的树采用多重链表存储,毎个结点有m+1个域,其中有1个数据域,m 个指向孩子的指针。 则空指针的数目是多少?说明这种存储方式的利弊。
【答案】(1)空指针数目:n (n>0)个结点的m 度树共有nm 个链域,除根结点外,每个结点均有一个指针所指,故该树的空链域有nm-(n-1)=n(m-l )+1个。
(2)利弊:这种存储结构统一,便于处理但空链域造成存储效率低。
8. 用单链表保存m 个整数,节点的结构为(data , link ), 且
点而删除其余绝对值相等的节点。
例如若给定的单链表head 如下
第 4 页,共 21 页 (n 为正整数)。现要求设计一个时间复杂度尽可能高效地算法,对于链表中绝对值相等的节点,仅保留第一次出现的节