李春葆《数据结构教程》(C++语言描述)配套题库【课后习题】(串)
- 格式:pdf
- 大小:409.09 KB
- 文档页数:11
第4章串1.采用顺序结构存储串,编写一个实现串通配符匹配的算法pattern______index(),其中的通配符只有“?”,它可以和任一字符匹配成功,例如,pattern______index(″? re″,″there are″)返回的结果是2。
答:本题的基础是Brute—Force模式匹配算法,只是增加了“?”的处理功能。
对应的算法如下:2.有两个串s1和s2,设计一个算法求这样一个串,该串中的字符是s1和s2中的公共字符。
答:扫描s1,对于当前字符s1.data[i],若在s2中,则将其加入到串s3中。
最后返回s3串。
对应的算法如下:3.设目标为t=’abcaabbabcabaacbacba’,模式p=’abcabaa’。
(1)计算模式P的nextval函数值。
(2)不写算法,只画出利用KMP算法进行模式匹配时的每一趟匹配过程。
答:(1)先计算next数组,在此基础上求nextval数组,如表4-1所示。
表4-1 计算next数组和nextval数组(2)采用KMP算法求子串位置的过程如下(开始时i=0,j=0):第1趟匹配:此时i=4,j=4,匹配失败,而nextval[4]=0,则i=4,j=nextval[4]=0,即:第2趟匹配:此时i=6,j=2,匹配失败,而nextval[2]=0,则i=6,j=nextval[2]=0,即:第3趟匹配:此时i=6,j=0,匹配失败,而nextval[0]=-1,则i=6,j=nextval[0]=-1。
因j=-1,执行i=i+1=7,j=j+1=0,即:第4趟匹配:此时i=14,j=7,匹配成功,返回v=i-t.1ength=14-7=7。
上机实验题4实验题1编写一个程序algo4-1.cpp,实现顺序串的各种基本运算,并在此基础上设计一个程序exp4-1.cpp完成如下功能:(1)建立串s=″abcdefghefghijklmn″和串sl=″xyz″;(2)输出串s;(3)输出串s的长度;(4)在串s的第9个字符位置插入串s1而产生串s2;(5)输出串s2;(6)删除串s第2个字符开始的5个字符而产生串s2;(7)输出串s2;(8)将串s第2个字符开始的5个字符替换成串s1而产生串s2;(9)输出串s2;(10)提取串s的第2个字符开始的10个字符而产生串s3;(11)输出串s3;(12)将串s1和串s2连接起来而产生串s4;(13)输出串s4。
第10章外排序一、单项选择题(1)以下关于外排序的叙述正确的是______。
A.外排序把外存文件调入内存,再利用内排序方法进行排序,所以外排序所花的时间完全由采用的内排序确定B.外排序所花的时间=内排序时间+外存信息读/写时间+内部归并所花的时间C.外排序并不涉及文件的读/写操作D.外排序完全可以由内排序来替代【答案】B【解析】外排序所花的时间由内排序时间、外存读写时间、内部归并时间三部分时间构成,因此AC两项错误,B项正确;外排序要将文件读取到内存中进行排序,但是由于文件大小可能会大于内存的最大容量,因此外排序不能完全由内排序替代。
(2)如果将一个由置换-选择排序得到的输出文件F1(含所有初始归并段)作为输入文件再次进行置换-选择排序,得到输出文件F2(含所有初始归并段),则F1和F2的差异是______。
A.F2中归并段的个数减少B.F2中归并段的最大长度增大C.F2和F1无差异D .归并段个数及各归并段长度均不变,但F 2中可能存在与F 1不同的归并段【答案】C 【解析】当进行一次置换-选择排序后,文件的归并段即达到理想状态,无论再进行多少次排序,均不会发生变化,因此答案为C 项。
(3)采用败者树进行k 路平衡归并的外排序算法,其总的归并效率与k______。
A .有关B .无关【答案】A【解析】利用败者树进行k 路平衡归并不会影响总共需要的关键字比较次数,但是随着k 的增大,归并树的高度会减小,磁盘读/写的次数也就相应减少,从而提高总的归并效率,因此答案为A 项。
(4)对m 个初始归并段实施k 路平衡归并排序,所需的归并趟数是______。
A .1B .m/kC ./m k ⎡⎤⎢⎥D .log k m ⎡⎤⎢⎥【答案】D【解析】采用k 路归并,相应的归并树就有log k m ⎡⎤⎢⎥+1层,则需要归并的趟数为log k m ⎡⎤⎢⎥,答案为D 项。
(5)设有100个初始归并段,如果采用k 路平衡归并3趟完成排序,则k 值最小是______。
第6章树和二叉树一、单项选择题(1)现有一“遗传”关系,设x是y的父亲,则x可以把他的属性遗传给y。
表示该遗传关系最适合的数据结构为______A.数组B.树C.图D.线性表【答案】B【解析】树是一种非线性数据结构,它的每一个结点可以有零个或多个后继结点,但有且只有一个前趋结点,这一特点正好与父子间的遗传关系相似,所以答案为B项。
(2)一棵高度为h、结点个数为n的m(m≥3)次树中,其分支数是______。
A.nhB.n+hC.n-1D.h-1【答案】C【解析】无论树的高度是多少,其分支数永远比节点数少1,因此答案为C项。
(3)若一棵三次树中有两个度为3的结点,一个度为2的结点,两个度为1的结点,该树一共有______个结点。
A.5B.8C.10D.11【答案】D【解析】结点的度即为该结点的孩子数,由题可知,此树共用孩子3×2+2×1+1×2=10个,又因为根节点不是任何结点的孩子,所以共有结点10+1=11个,答案为D项。
(4)若一棵有n个结点的二叉树,其中所有分支结点的度均为k,该树中的叶子结点个数是______。
A.n(k-1)/kB.n-kC.(n+1)/kD.(nk-n+1)/k【答案】D【解析】在分支结点度均为k的树中,每增加一个分支结点,可以增加(k-1)个叶子,假设该树的叶子结点数为x,则有(n-x)个分支结点,则这些分支结点增加的总叶子数为(k-1)×(n-x-1)+k,即可得到等式(k-1)×(n-x-1)+k =x,解得x=(nk-n+1)/k,答案为D项。
(5)以下关于二叉树的说法中正确的是______。
A.二叉树中每个结点的度均为2B.二叉树中至少有一个结点的度为2C.二叉树中每个结点的度可以小于2D.二叉树中至少有一个结点【答案】C【解析】二叉树的结点的度数不多于2,但是对于其具体的结点数并没有明确的要求,因此答案为C项。
第1章绪论一、单项选择题(1)计算机所处理的数据一般具备某种内在联系,这是指______。
A.数据和数据之间存在某种关系B.元素和元素之间存在某种关系C.元素内部具有某种结构D.数据项和数据项之间存在某种关系【答案】B【解析】数据是计算机操作对象的总称,数据元素是计算机处理数据的基本单位,因此数据之间的内在联系指的应该是数据元素和数据元素之间的关系。
(2)在数据结构中,与所使用计算机无关的是数据的______结构。
A.逻辑B.存储C.逻辑和存储D.物理【答案】A【解析】数据的逻辑结构是从逻辑关系上描述数据的,它与数据的存储无关,是独立于计算机的。
而数据的存储结构是指数据元素及其关系在计算机存储器中的存储方式,也称为数据的物理结构,与计算机有关。
(3)数据结构在计算机中的表示称为数据的______。
A.存储结构B.抽象数据类型C.顺序结构D.逻辑结构【答案】A【解析】数据的存储结构是逻辑结构用计算机语言的实现或在计算机中的表示。
(4)在计算机中存储数据时,通常不仅要存储各数据元素的值,还要存储______。
A.数据的处理方法B.数据元素的类型C.数据元素之间的关系D.数据的存储方法【答案】C【解析】存储实现的基本目标是建立数据的机内表示,其包括两个部分,即数据元素的存储和数据元素之间关系的存储。
(5)在计算机的存储器中表示数据时,逻辑上相邻的两个元素对应的物理地址也是相邻的,这种存储结构称为______。
A.逻辑结构B.顺序存储结构C.链式存储结构D.以上都正确【答案】B【解析】顺序存储结构是把逻辑上相邻的结点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现,由此得到的存储表示称为顺序存储结构。
所以答案B项正确;逻辑结构是独立于计算机的与存储结构相平行的概念,并不是存储结构的一种,A项错误;中链式存储结构不要求逻辑上相邻的结点在物理位置上也相邻,结点同的逻辑关系用附加的指针域来表示,C项错误。
第11章外排序教材中练习题及参考答案1. 外排序中两个相对独立的阶段是什么?答:外排序中两个相对独立的阶段是产生初始归并段和多路归并排序。
2.给出一组关键字T=(12,2,16,30,8,28,4,10,20,6,18),设内存工作区可容纳4个记录,给出用置换-选择排序算法得到的全部初始归并段。
答:置换-选择排序算法的执行过程如表11.1所示。
共产生两个初始归并段,归并段1为(2,8,12,16,28,30),归并段2为(4,6,10,18,20)。
表11.1 初始归并段的生成过程3. 设输入的关键字满足k1>k2>…>k n,缓冲区大小为m,用置换-选择排序方法可产生多少个初始归并段?答:可产生⎡n/m⎤个初始归并段。
设记录R i的关键字为k i(1≤i≤n),先读入m个记录R1、R2、…、R m,采用败者树选择最小记录R m,将其输出到到归并段1,R min=k m,在该位置上读入R m+1,采用败者树选择最小记录R m-1,将其输出到到归并段1,R min=k m-1,在该位置上读入R m+2,采用败者树选择最小记录R m-2,将其输出到到归并段1,R min=k m-2,…,以此类推,产生归并段1:(R m,R m-1,…,R1)。
同样产生其他归并段(R2m,R2m-1,…,R m+1),(R3m,R3m-1,…,R2m+1),…,一共有⎡n/m⎤个初始归并段。
4. 什么是多路平衡归并,多路平衡归并的目的是什么?答:归并过程可以用一棵归并树来表示。
多路平衡归并对应的归并树中,每个结点都是平衡的,即每个结点的所有子树的高度相差不超过1。
k路平衡归并的过程是:第一趟归并将m个初始归并段归并为⎡m/k⎤个归并段,以后每一趟归并将l个初始归并段归并为⎡l/k⎤个归并段,直到最后形成一个大的归并段为止。
m个归并段采用k路平衡归并,总的归并趟数s=⎡log k m⎤。
其趟数是所有归并方案中最少的,所以多路平衡归并的目的是减少归并趟数。
一、绪论选择题1.数据结构是一门研究非数值计算的程序设计问题中计算机的1以及它们之间的2和运算等的学科。
1 A.数据元素 B.计算方法 C.逻辑存储 D.数据映像2 A.结构 B.关系 C.运算 D.算法2.数据结构被形式地定义为(K, R),其中K是1的有限集,R是K上的2有限集。
1 A.算法 B.数据元素 C.数据操作 D.逻辑结构2 A.操作 B.映像 C.存储 D.关系3.在数据结构中,从逻辑上可以把数据结构分成。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构4.线性结构的顺序存储结构是一种1的存储结构,线性表的链式存储结构是一种2的存储结构。
A.随机存取B.顺序存取C.索引存取D.散列存取5.算法分析的目的是1,算法分析的两个主要方面是2。
1 A.找出数据结构的合理性 B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性2 A.空间复杂度和时间复杂度 B.正确性和简单性C.可读性和文档性D.数据复杂性和程序复杂性6.计算机算法指的是1,它必须具备输入、输出和2等5个特性。
1 A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法2 A.可执行性、可移植性和可扩充性 B.可行性、确定性和有穷性C.确定性、有穷性和稳定性D.易读性、稳定性和安全性7.线性表的逻辑顺序与存储顺序总是一致的,这种说法。
A.正确B.不正确8线性表若采用链式存储结构时,要求内存中可用存储单元的地址。
A.必须连续的B.部分地址必须连续的C.一定是不续的D连续不连续都可以9.以下的叙述中,正确的是。
A.线性表的存储结构优于链式存储结构B.二维数组是其数据元素为线性表的线性表C.栈的操作方式是先进先出D.队列的操作方式是先进后出10.每种数据结构都具备三个基本运算:插入、删除和查找,这种说法。
A.正确B.不正确填空题1.数据逻辑结构包括三种类型、和,树形结构和图形结构合称为。
第9章内排序一、选择题1.排序算法的稳定性是指()。
A.经过排序之后,能使值相同的数据保持原顺序中的相对位置不变B.经过排序之后,能使值相同的数据保持原顺序中的绝对位置不变C.算法的排序性能与被排序元素的数量关系不大D.算法的排序性能与被排序元素的数量关系密切【答案】A【解析】假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。
2.下面给出的四种排序方法中,排序过程中的比较次数与排序方法无关的是()。
A.选择排序法B.插入排序法C.快速排序法D.堆排序法【答案】A【解析】选择排序的基本思想是:第i趟排序开始时,当前有序区和无序区分别为R[0..i-1]和R[i..n-1](______0≤i<n-1),该趟排序则是从当前无序区中选出关键字最小的记录R[k],将它与无序区的第1个记录R[i]交换,使R[0..i]和R[i+1..n-1]分别变为新的有序区和新的无序区。
3.设被排序的结点序列共有N个结点,在该序列中的结点已十分接近排序的情况下,用直接插入法、归并法和一般的快速排序法对其排序,这些算法的时间复杂性应为()。
A.O(N),O(N),O(N)B.O(N),O(N*log2N),O(N*log2N)C.O(N),O(N*log2N),O(N2)D.O(N2),O(N*log2N),O(N2)【答案】C【解析】因为该序列中的结点已经十分接近排序的情况,对于直接插入法,大部分结点只需要直接插入后面即可,因此时间复杂度为O(N)。
对于采用归并法,它是一种稳定的排序方法,它的时间复杂度为O(Nlog2N)。
对于一般的快速排序法,序列越接近有序,所需要的比较次数越多,此时的时间复杂度为O(N2)。
4.数据序列(8,9,10,4,5,6,20,1,2)只能是下列排序算法中的()的两趟排序后的结果。