数据结构与算法4 串
罗文劼《数据结构与算法》第4版-第1章课后习题参考答案

第1章绪论1.选择题(1)C (2)B (3)C (4)D (5)B2.判断题(1)√(2)Ⅹ(3)Ⅹ(4)Ⅹ(5)√3.简答题(1)根据数据元素之间的不同逻辑关系,通常将其划分为哪几类结构?【解答】常见的四种逻辑结构有:①集合结构:数据元素间的关系是“属于同一个集合”。
②线性结构:数据元素之间存在着一对一的关系。
③树型结构:数据元素之间存在着一对多的关系。
④图型结构:数据元素之间存在着多对多的关系。
(2)请描述线性结构中数据元素与数据元素之间的关系特点?【解答】线性结构的特点是数据元素之间是一种线性关系,数据元素“一个接一个的排列”。
在线性结构中,有且仅有一个元素被称为“第一个”,除第一个元素之外其他元素均有唯一一个“前驱”;有且仅有一个元素被称为“最后一个”,除最后一个元素之外其他元素均有唯一一个“后继”。
(3)请描述树形结构中数据元素与数据元素之间的关系特点?【解答】树形存储结构,就是数据元素与元素之间存在着一对多关系的数据结构。
在树形存储结构中,树的根节点没有前驱结点,其余的每个节点有且只有一个前驱结点,除叶子结点没有后续节点外,其他节点的后续节点可以有一个或者多个。
(4)常用的存储结构有哪几种,各自的特点是什么?【解答】常见的四种存储结构有:①顺序存储:把逻辑上相邻的元素存储在物理位置相邻的存储单元中。
顺序存储结构是一种最基本的存储表示方法,通常借助于程序设计语言中的数组来实现。
②链接存储:对逻辑上相邻的元素不要求不要求物理位置相邻的存储单元,元素间的逻辑关系通过附设的指针域来表示。
③索引存储:通过建立索引表存储结点信息的方法,其中索引表一般存储结点关键字和一个地点信息,可通过该地址找到结点其它信息。
④散列存储:根据结点的关键字直接计算出该结点的存储地址的方法。
(5)简述算法和程序的区别。
【解答】一个算法若用程序设计语言来描述,则它就是一个程序。
算法的含义与程序十分相似,但又有区别。
一个程序不一定满足有穷性。
《数据结构与算法(C++语言版)》第4章_串

串函数与串的类定义
• 常用的 常用的C++串函数 串函数 • C++的串库(string.h)中提供了许多字符串的操作函数,几 个常用的C++字符串函数及其使用方法如下。 •假设已有以下定义语句:
串函数与串的类定义
• (1)串拷贝函数 • char *strcpy(char *s1, const char *s2),将字符串s2复制到字 符串数组s1中,返回s1的值。 • char *strncpy(char *s1, const char *s2, size_tn)将字符串s2中最 多n个字符复制到字符串数组s1中,返回s1的值。 • 例如:
串函数与串的类定义
• (3)串比较函数 • int strcmp(const char *s1, const char *s2),比较字符串s1和字 符串s2。函数在s1等于、小于或大于s2时,分别返回0、小 于0或者大于0的值。 • int strncmp(const char *s1, const char *s2, size_tn)比较字符串 s1中的n个字符和字符串s2。函数在s1等于、小于或大于s2 时,分别返回0、小于0或者大于0的值。 • 例如:
串模式匹配
• 无回溯的匹配算法 • 在上面介绍的匹配算法中,某趟匹配失败时,下一趟的匹 配相当于将子串P后移1位再从头与主串中对应字符进行比 较,即相当于i指示器回溯到上趟(最近失败的一趟)匹配 的起点的下一个位置,这样,主串中每个字符都要与子串 中的第1个字符对应一次,再向后比较。因此,主串中每个 字符参加比较的次数最多可达n次(n为子串长度),因此 时间复杂度为O(nm)。那么,能否使目标串中每个字符只参 加一次比较呢?也就是说,能否不回溯i指示器?回答是肯 定的。这个问题是由D.E.Knoth与V.R.Pratt和J.H.Morris同时 解决的,所以有的文献也称这种思想的串匹配算法为KMP 算法。
数据结构-第4章 串

4.1 串的类型定义
子串的序号:将子串在主串中首次出现时的该 子串的首字符对应在主串中的序号,称为子串 在主串中的序号(或位置)。 【例】 A=“abcdefbbcd”,B=“bcd”,B在A中的 序号为2。 特别地,空串是任意串的子串,任意串是其自 身的子串。
4.1.2 串的抽象数据类型定义
//查找ab子串
if (p->data==‘ a’ && p->next->data==‘b’)
{ p->data=‘x’; p->next->data=‘z’;
q=(LinkStrNode *)malloc(sizeof(LinkStrNode));
q->data=‘y’;
q->next=p->next; p->next=q;
s: a a a a b c d
t: a ab bac acb bc c ✓ 匹配成功 算法的思路是从s的每一个字符开始依次与t的 字符进行匹配。
4.2.1 Brute-Force算法
int BFIndex(SqString s,SqString t)
{ int i=0, j=0,k;
while (i<s.length && j<t.length)
4.1 串的类型定义 4.2 串的表示和实现 4.3 串的模式匹配算法
本章要求
理解: 1、串的基本概念、类型定义 2、串的存储表示和实现 3、串的KMP算法
掌握: 4、串的简单模式匹配算法(BF)
第4章 串的基本概念
串(或字符串):是由零个或多个字符组成 的有限序列。
串的逻辑表示: S=“a1a2…ai…an”,其中S为 串名,ai (1≤i≤n)代表单个字符,可以是字母、 数字或其它字符(包括空白符)。 串值:双引号括起来的字符序列。双引号不是 串的内容,只起标识作用。
《数据结构与算法》第四章-学习指导材料

《数据结构与算法》第四章串知识点及例题精选串(即字符串)是一种特殊的线性表,它的数据元素仅由一个字符组成。
4.1 串及其基本运算4.1.1 串的基本概念1.串的定义串是由零个或多个任意字符组成的字符序列。
一般记作:s="s1 s2 … s n""其中s 是串名;在本书中,用双引号作为串的定界符,引号引起来的字符序列为串值,引号本身不属于串的内容;a i(1<=i<=n)是一个任意字符,它称为串的元素,是构成串的基本单位,i是它在整个串中的序号; n为串的长度,表示串中所包含的字符个数,当n=0时,称为空串,通常记为Ф。
2.几个术语子串与主串:串中任意连续的字符组成的子序列称为该串的子串。
包含子串的串相应地称为主串。
子串的位置:子串的第一个字符在主串中的序号称为子串的位置。
串相等:称两个串是相等的,是指两个串的长度相等且对应字符都相等。
4.2 串的定长顺序存储及基本运算因为串是数据元素类型为字符型的线性表,所以线性表的存储方式仍适用于串,也因为字符的特殊性和字符串经常作为一个整体来处理的特点,串在存储时还有一些与一般线性表不同之处。
4.2.1 串的定长顺序存储类似于顺序表,用一组地址连续的存储单元存储串值中的字符序列,所谓定长是指按预定义的大小,为每一个串变量分配一个固定长度的存储区,如:#define MAXSIZE 256char s[MAXSIZE];则串的最大长度不能超过256。
如何标识实际长度?1. 类似顺序表,用一个指针来指向最后一个字符,这样表示的串描述如下:typedef struct{ char data[MAXSIZE];int curlen;} SeqString;定义一个串变量:SeqString s;这种存储方式可以直接得到串的长度:s.curlen+1。
如图4.1所示。
s.dataMAXSIZE-1图4.1 串的顺序存储方式12. 在串尾存储一个不会在串中出现的特殊字符作为串的终结符,以此表示串的结尾。
数据结构与算法面试题

数据结构与算法面试题目录1. 数组 (3)2. 链表 (5)3. 栈 (9)4. 队列 (10)5. 堆(优先队列) (12)6. 二叉树 (15)7. 二叉查找树 (24)8. 字典树 (26)9. 平衡树(AVL) (26)10. 红黑树 (26)11. B树/B+树 (28)12. 哈希 (29)13. 图 (31)14. 字符串 (33)15. 排序 (36)16. 二分查找 (40)17. 跳跃列表 (41)18. 动态规划 (42)1.数组应用场景:1)数据比较少2)经常做的运算是按序号访问数据元素面试题选择题:1)对于长度为n的线性表,建立其对应的单链表的时间复杂度为()。
O(1)O(log2n)O(n)O(n^2)2)下列哪些不是线性表?队列栈关联数组链表3)稀疏矩阵一般的压缩存储方法有两种,即()二维数组和三维数组三元组和散列三元组和十字链表散列和十字链表4)将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为1004055805)设A是n*n的对称矩阵,将A的对角线及对角线上方的元素以列为主的次序存放在一维数组B[1..n(n+1)/2]中,对上述任一元素aij (1≤i,j≤n,且i≤j)在B中的位置为()i(i-1)/2+jj(j-1)/2+ij(j-1)/2+i-1i(i-1)/2+j-16)若有定义:int c[4][5],( *pc)[5];pc=c;那么,下列对数组C的元素引用正确的是( )。
pc+1* (pc+3)* (pc+1) +3* (*pc+2)问答题:1)数组和链表的区别思路:从逻辑结构上来看,数组必须实现定于固定的长度,不能适应数据动态增减的情况,即数组的大小一旦定义就不能改变。
当数据增加是,可能超过原先定义的元素的个数;当数据减少时,造成内存浪费;链表动态进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。
从内存存储的角度看;数组从栈中分配空间(用new则在堆上创建),对程序员方便快速,但是自由度小;链表从堆中分配空间,自由度大但是申请管理比较麻烦。
数据结构与算法课程总结

本课程的先修可称为离散数学和高级语言程序设计,后续课程为操作系统、数据库系统 原理和编译原理等。
数据结构中的存储结构及基本运算的实现需要程序设计的基本知识和编程能力和经验, 本课程大部分实例和实验均是用 C 语言实现的,故要求叫熟练地掌握 C 语言。 三、选用的教材及参考书
教材选用《数据结构与算法》,大连理工大学出版社,作者郭福顺、廖明宏等。参考书 为《数据结构(C 语言版》,清华大学出版社出版,严蔚敏、吴伟民编著。 四、教学内容
第六章 树 教学要求: 本章目的是二元树的定义、性质、存储结构、遍历、线索化,树的定义、存储结构、 遍历、树和森林与二元树的转换,哈夫曼树及其应用(优化判定过程和哈夫曼编码)等内容。 要求在熟悉这些内容的基础上,重点掌握二元树的遍历算法及其有关应用,难点是使用本章 所学到的有关知识设计出有效算法,解决与树或二元树相关的应用问题。 教学内容 1.树的概念(领会) 1.1 树的逻辑结构特征。 1.2 树的不同表示方法。 1.3 树的常用术语及含义。
数据结构第四章串

(2) 置换操作:用联接算法来实现。用在求子串序号(a,b,h)中得到的 ind 将a分成3部分:第一部分是b在a中的第一个位置前的子串substr (a,1,ind-1);第二部分是b(以c来代替);第三部分是b在a中的最后一个 位置后的子串substr(a,ind+m,n)。 即 a substr(a,I,ind-1)||c||substr(a,ind+m,n)
4. 2 串的基本运算
对于串的基本操作,许多高级语言均提供了相应的运算或标准 库函数来实现。下面仅介绍几种常用的串运算。 (1)联接(concatenation) 联接是串的最基本,最重要的运算。两个串的联接是将一个串 紧接着放在另一个串的末尾。联接用符号“||”表示。 例如:a=”bei” b=“jing” a || b=“beijing” (2)求子串(substr) SUBSTR(a,m,n)功能: 从a 中截取子串,从第m个字符到第n个 字符的子串(m<n)。子串应是将串a中取出从标号m开始的连续n -m+1个字符。 例:SUBSTR(“ABCDEFG”,2,3)=”BC” 利用求子串及联接两种运算可以完成对串的插入、删除和修改。 例如: a=“bejing” b=“iy” ,将b插入到a的第二个字符之后 得到新的串s,则 s=substr(a,1,2) || b || substr(a,3,6) =“beiyjing”
(5)置换(repleace) 置换运算repleace(a,b,c)表示在a中搜索b,若b是a的 子串,就以c代替b,若不是,则经置换后,a不变。 例如:a=“monday”, b=“mon”, c=“thurs” repleace(a,b,c)=“thursday” 置换运算是将串a中所有的子串b用c来代替。 在一部分程序设计语言中没有实现,仍可用前三种运 算来完成。 置换算法过程:实现置换运算repleace(a,b,c),同 样也是在a中搜索是否与b相同的子串,若有,以c来代 替,再继续向下搜,直到在a中找不到和b相同的子串 为止。
《数据结构与算法》第四章-串习题

《数据结构与算法》第二部分习题精选一、填空题1. 称为空串;称为空白串。
2. 设S=“A;/document/Mary.doc”,则strlen(s)= , “/”的字符定位的位置为。
3. 子串的定位运算称为串的模式匹配,称为目标串,称为模式。
4. 设目标T=”abccdcdccbaa”,模式P=“cdcc”,则第次匹配成功。
5. 若n为主串长,m为子串长,则串的古典(朴素)匹配算法最坏的情况下需要比较字符的总次数为。
二、单选题()1. 串是一种特殊的线性表,其特殊性体现在:A.可以顺序存储B.数据元素是一个字符C.可以链式存储D.数据元素可以是多个字符()2.设有两个串p和q,求q在p中首次出现的位置的运算称作:A.连接B.模式匹配C.求子串D.求串长()3.设串s1=’ABCDEFG’,s2=’PQRST’,函数con(x,y)返回x和y 串的连接串,subs(s, i, j)返回串s的从序号i开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1, 2, len(s2)), subs(s1, len(s2), 2))的结果串是:A.BCDEF B.BCDEFG C.BCPQRST D.BCDEFEF三、计算题1.设s=’I AM A STUDENT’, t=’GOOD’, q=’WORKER’, 求Replac e(s,’STUDENT’,q)和Concat(SubString(s,6,2), Concat(t,SubString(s,7,8)))。
2.已知主串3.s=’ADBADABBAABADABBADADA’,模式串pat=’ADABBADADA’。
写出模式串的nextval函数值,并由此画出KMP算法匹配的全过程。
答案一、填空题1. 不包含任何字符(长度为0)的串由一个或多个空格(仅由空格符)组成的串2. 20 33.被匹配的主串子串4. 65. (n-m+1)*m二、单选题1. B2. B3. D四、计算题解:①Replace(s,’STUDENT’,q)=’I AM A WORKER’②因为SubString(s,6,2)=‘A ’;SubString(s,7,8)=‘STUDENT’Concat(t,SubString(s,7,8))=’GOOD STUDENT’所以Concat(SubString(s,6,2), Concat(t,SubString(s,7,8)))=‘A GOOD STUDENT’2. 解:(由演示程序得知)nextval函数值为0 1 0 2 1 0 1 0 4 0 在第12个字符处发现匹配!s=’ADBADABBAABADABBADADA’pat=’ADABBADADA’。
【华中科技大学】《数据结构与算法分析》(827)考试大纲

华中科技大学硕士研究生统一入学考试《数据结构与算法分析》(827)考试大纲第一部分考试说明一、考试性质数据结构与算法分析是软件学院硕士生入学选考的专业基础课之一。
考试对象为参加软件学院2008年全国硕士研究生入学考试的准考考生。
二、考试形式与试卷结构(一)答卷方式:闭卷,笔试(二)答题时间:180分钟(三)考试题型及比例术语解释15%选择填空 30%简答题30%设计及应用题 25%(四)参考书目严蔚敏,吴伟民,数据结构(C语言版),清华大学出版社,1997年4月。
第二部分考查要点(一)基本概念和术语1.数据结构的概念2.抽象数据结构类型的表示与实现3.算法,算法设计的要求,算法效率的度量,存储空间要求。
(二)线形表1.线形表的类型定义2.线形表的顺序表示和实现3.线形表的链式表示和实现(三)栈和队列1.栈的定义,表示和实现2.栈的应用:数制转换,括号匹配,行编辑,迷宫求解,表达式求值.3.栈与递归实现4.队列。
(四)串1.串的定义,表示和实现2.串的模式匹配算法(五)树和二叉树1.树的定义和基本术语2.二叉树,遍历二叉树和线索二叉树3.树和森林:存储结构,与二叉树的转换,遍历4.霍夫曼树和霍夫曼编码5.回溯法与树的遍历(六)查找1.静态查找表2.动态查找表3.哈希表(七)图1.图的定义和术语2.图的存储结构3.图的遍历4.图的连通性问题5.拓扑排序与关键路径6.最短路径(八)内部排序1.排序的概念2.插入排序3.快速排序4.选择排序:简单选择,树形选择,堆排序5.归并排序6.基数排序7.各种排序方法的比较第三部分考试样题(略)。
数据结构与算法_桂林电子科技大学中国大学mooc课后章节答案期末考试题库2023年

数据结构与算法_桂林电子科技大学中国大学mooc课后章节答案期末考试题库2023年1.下面哪种数据结构不是线性结构()参考答案:二叉树2.串S=”myself“,其子串的数目是()参考答案:223.设目标串为‘abccdcdccbaa',模式串为'cdcc',则第()次匹配成功。
参考答案:64.串S='aaab',其next数组为()参考答案:-1 0 1 25.KMP算法相对于BF算法的优点是时间效率高参考答案:正确6.串是一种数据对象和操作都特殊的线性表参考答案:正确7.下面哪个()可能是执行一趟快速排序能够得到的序列参考答案:[41,12,34,45,27] 55 [72,63]8.设主串t的长度为n,模式串p的长度为m,则BF算法的时间复杂度为O(n+m)参考答案:错误9.从一个长度为n的顺序表中删除第i个元素(0 ≤ i≤ n-1)时,需向前移动的元素的个数是()参考答案:n-i-110.对线性表进行二分查找时,要求线性表必须()参考答案:以顺序方式存储,且结点按关键字有序排序11.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。
参考答案:仅有尾指针的单循环链表12.最小不平衡子树是指离插入结点最近,且包含不平衡因子结点的子树参考答案:正确13.在单链表中,存储每个结点需有两个域,一个是数据域,另一个是指针域,它指向该结点的( )参考答案:直接后继14.从一个具有n个节点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较()个结点参考答案:n/215.对以下单循环链表分别执行下列程序段,说明执行结果中,各个结点的数据域分别是()p = tail→link→link; p→info = tail→info;【图片】参考答案:8,3,6,816.对以下单链表执行如下程序段,说明执行结果中,各个结点的数据域分别是()void fun (Linklist H) //H是带有头结点的单链表{ PNode p,q; p=H->link;H->link=NULL; while (p) { q=p; p=p->link; q->link=H->link; H->link=q; }}【图片】参考答案:8,6,4,217.根据教科书中线性表的实现方法,线性表中的元素必须是()参考答案:相同类型18.若线性表中最常用的操作是存取第i个元素及其前驱和后继元素的值,为了节省时间应采用的存储方式()参考答案:顺序表19.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为()参考答案:n-i+120.循环队列用数组A[0,m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是()参考答案:(rear-front+m)%m21.已知其头尾指针分别是front和rear,判定一个循环队列QU(最多元素为m)为空的条件是()参考答案:QU—>front= =QU—>rear22.一个队列的入列序列是1,2,3,4,则队列的输出序列是()参考答案:1,2,3,423.已知其头尾指针分别是front和rear,判定一个循环队列QU(最多元素为m)为满的条件是()参考答案:QU—>front= =(QU—>rear+1)%m24.在计算机内实现递归算法时所需的辅助数据结构是( )参考答案:栈25.设循环队列的元素存放在一维数组Q[0‥30]中,队列非空时,front指示队头元素的前一个位置,rear指示队尾元素。
数据结构与算法_第4章_串

第4章 串
4.2 串的表示和实现
②堆串 常用的实现方法:
很多实用的串处理系统中, 采用堆结构,它的特点是:系 统将一个很大的连续存储空间作为串的公用空间, 每当建 立新串时, 系统从中分配一个和串长相同的连续空间存储 串值, 它们的地址是在程序执行中动态分配的. 系统中所有串名的存储映像构成一个符号表。其 中len域指示串的长度, start域指示串的起始位置。借
可用链表来存储串值由于串的数据元素是一个字符它只有位二进制数因此用链表存储时通常一个结点中存放的不是一个字符而是一个定长子串链表中最后一个结点不一定被占满
第4章 串
4.1 串的定义
4.2 串的表示和实现
4.3 串的应用举例:简单的行编辑器
4.4 总结与提高
*串的模式匹配算法
1
第4章 串
4.1 串的定义
8
StrIndex(S, 4,T) = 6
第4章 串
4.1 串的定义
基本操作:StrReplace (S, T, V)
StrReplace (S, T, V) 初始条件:串S, T和 V 均已存在,且 T 是非空串。 操作结果:用V替换主串S中出现的所有与(模式 串)T相等的不重叠的子串。 例如: S = abcaabcaaabca,T = bca, V = x S = axaxaax
返回
10
第4章 串
4.2 串的表示和实现
常用的实现方法:
定长顺序存储表示
顺序 存储
——用一组地址连续的存储单元存储串值的字符序 列,属静态存储方式。
堆分配存储表示
——用一组地址连续的存储单元存储串值的字符序 列,但存储空间是在程序执行过程中动态分配而 得。
算法与数据结构考研试题精析(第二版)第4章串答案概要

第四章串一、选择题1.B 2.E 3.C 4.A5.C6.A7.1D 7.2F 8.B注9.D 10.B注:子串的定义是:串中随意个连续的字符构成的子序列,并规定空串是随意串的子串,随意串是其自己的子串。
若字符串长度为n(n>0),长为n的子串有1个,长为n-1的子串有2个,长为n-2的子串有3个,,,,长为1的子串有n个。
因为空串是任何串的子串,所以此题的答案为:8*(8+1)/2+1=37。
应选B。
但某些教科书上以为“空串是随意串的子串”无心义,所以以为选C。
为防止考试中的二意性,编者以为第9题出得好。
二、判断题1.√2.√3.√三.填空题1.(1)由空格字符(ASCII值32)所构成的字符串(2)空格个数23.随意个连续的字符构成的子序列4.5 5.O(m+n) 6.011223127.010104218.(1)模式般配(2)模式串.字符9.(1)其数据元素都是字符(2)次序储存(3)和链式储存(4)串的长度相等且两串中对应地点的字符也相等10.两串的长度相等且两串中对应地点的字符也相等。
11.’xyxyxywwy’12.*s++=*t++或(*s++=*t++)!=‘\0’13.(1)chars[] (2)j++ (3)i>=j14.[题目剖析]此题算法采纳次序储存构造求串s和串t的最大公共子串。
串s 用i指针(1<=i<=s.len)。
t串用j指针(1<=j<=t.len)。
算法思想是对每个i(1<=i<=s.len,即程序中第一个WHILE循环),来求从i开始的连续字符串与从j(1<=j<=t.len,即程序中第二个WHILE循环)开始的连续字符串的最大般配。
程序中第三个(即最内层)的WHILE循环,是当s中某字符(s[i])与t中某字符(t[j])相等时,求出局部公共子串。
若该子串长度大于已求出的最长公共子串(初始为0),则最长公共子串的长度要改正。
罗文劼《数据结构与算法》第4版-第3章课后习题参考答案

第3章线性结构的扩展1.选择题(1)B (2)A (3)DAB (4)CCC (5)C2.判断题(1)Ⅹ(2)√(3)√(4)√(5)Ⅹ(6)Ⅹ(7)Ⅹ(8)Ⅹ(9)Ⅹ(10)Ⅹ3.简答题1.KMP算法较朴素的模式匹配算法有哪些改进?【解答】KMP算法主要优点是主串指针不回溯。
当主串很大不能一次读入内存且经常发生部分匹配时,KMP 算法的优点更为突出。
2.设字符串S=‘aabaabaabaac',P=‘aabaac'。
(1)给出S和P的next值和nextval值;(2)若S作主串,P作模式串,试给出利用KMP算法的匹配过程。
【解答】(1)S的next与nextval值分别为012123456789和002002002009,p的next与nextval值分别为012123和002003。
(2)利用BF算法的匹配过程:利用KMP算法的匹配过程:第一趟匹配:aabaabaabaac 第一趟匹配:aabaabaabaacaabaac(i=6,j=6) aabaac(i=6,j=6)第二趟匹配:aabaabaabaac 第二趟匹配:aabaabaabaacaa(i=3,j=2) (aa)baac第三趟匹配:aabaabaabaac 第三趟匹配:aabaabaabaaca(i=3,j=1) (成功) (aa)baac第四趟匹配:aabaabaabaacaabaac(i=9,j=6)第五趟匹配:aabaabaabaacaa(i=6,j=2)第六趟匹配:aabaabaabaaca(i=6,j=1)第七趟匹配:aabaabaabaac(成功) aabaac(i=13,j=7)3.考虑对KMP算法能否再做改进。
【解答】4.说明一维数组与有序表的异同。
【解答】数组:数组是由类型名、标识符和维数组成的符合数据类型,类型名规定了存放在数组中的元素的类型,而维数则指数组中包含的元素个数。
线性表:(亦作有序表)是最基本、最简单、也是最常用的一种数据结构。
数据结构与算法知到章节答案智慧树2023年中国民用航空飞行学院

数据结构与算法知到章节测试答案智慧树2023年最新中国民用航空飞行学院绪论单元测试1.本课程中需要掌握数据结构的基本概念、基本原理和基本方法。
参考答案:对2.在本课程的学习中还需要掌握算法基本的时间复杂度与空间复杂度的分析方法,能够设计出求解问题的高效算法。
参考答案:对第一章测试1.算法的时间复杂度取决于()。
参考答案:问题的规模2.算法的计算量的大小称为算法的()。
参考答案:复杂度3.算法的时间复杂度与()有关。
参考答案:问题规模4.以下关于数据结构的说法中正确的是()。
参考答案:数据结构的逻辑结构独立于其存储结构5.数据结构研究的内容是()。
参考答案:包括以上三个方面第二章测试1.线性表是具有n个()的有限序列。
参考答案:数据元素2.单链表又称为线性链表,在单链表上实施插入和删除操作()。
参考答案:不需移动结点,只需改变结点指针3.单链表中,增加一个头结点的目的是()。
参考答案:方便运算的实现4.单链表中,要将指针q指向的新结点插入到指针p指向的单链表结点之后,下面的操作序列中()是正确的。
参考答案:q->next=p->next; p->next=q;5.链表不具有的特点是()。
参考答案:可随机访问任一元素第三章测试1.循环队列存储在A[0..m]中,则入队时的操作是()。
参考答案:rear=(rear+1)%(m+1)2.关于循环队列,以下()的说法正确。
参考答案:循环队列不会产生假溢出3.如果循环队列用大小为m的数组表示,队头位置为front、队列元素个数为size,那么队尾元素位置rear为()。
参考答案:(front+size-1)%m4.若顺序栈的栈顶指针指向栈顶元素位置,则压入新元素时,应()。
参考答案:先移动栈顶指针5.设栈S和队列Q的初始状态均为空,元素{1, 2, 3, 4, 5, 6, 7}依次进入栈S。
若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是{2, 5, 6, 4, 7, 3, 1},则栈S的容量至少是:参考答案:46.栈操作数据的原则是()。
算法与数据结构考研试题精析(第二版)第4章 串

第四章串一、选择题1.下面关于串的的叙述中,哪一个是不正确的?()【北方交通大学2001 一、5(2分)】A.串是字符的有限序列B.空串是由空格构成的串C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储2 若串S1=‘ABCDEFG’, S2=‘9898’,S3=‘###’,S4=‘012345’,执行concat(replace(S1,substr(S1,length(S2),length(S3)),S3),subst r(S4,index(S2,‘8’),length(S2)))其结果为()【北方交通大学1999 一、5 (25/7分)】A.ABC###G0123 B.ABCD###2345 C.ABC###G2345 D.ABC###2345E.ABC###G1234 F.ABCD###1234 G.ABC###012343.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()A.求子串B.联接C.匹配D.求串长【北京邮电大学2000 二、4(20/8分)】【西安电子科技大学1996 一、1 (2分)】4.已知串S=‘aaab’,其Next数组值为()。
【西安电子科技大学1996 一、7 (2分)】A.0123 B.1123 C.1231 D.12115.串‘ababaaababaa’的next数组为()。
【中山大学1999 一、7】A.012345678999 B.012121111212 C.011234223456 D.01230123223456.字符串‘ababaabab’的nextval 为()A.(0,1,0,1,04,1,0,1) B.(0,1,0,1,0,2,1,0,1)C.(0,1,0,1,0,0,0,1,1) D.(0,1,0,1,0,1,0,1,1 )【北京邮电大学1999 一、1(2分)】7.模式串t=‘abcaabbcabcaabdab’,该模式串的next数组的值为(),nextval数组的值为()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章 串 4.3 串的存储及实现 常用的实现方法:
①定长顺序串 ②堆串 ③块链串
第4章 串
4.3 串的存储及实现
常用的实现方法:①定长顺序串
存储表示:静态数组结构
#define MAXLEN 40 typedef struct {
度为len的子串。
例如: S = character,则执行 StrDelete (S, 3, 3)之后
S = chater
第4章 串 4.2 串及其运算 基本操作: StrCat(S,T)
StrCat(S,T) 初始条件:串 S 和 T 存在。 操作结果:返回由 S 和 T联接而成的新串。
例如: StrCat (man, kind) = mankind
例如: S = chater,T = rac,则执行 StrInsert(S, 3, T)之后
S = character
第4章 串
4.2 串及其运算
基本操作:StrDelete (S, pos, len)
StrDelete (S, pos, len) 初始条件:串S存在1≤pos≤StrLength(S)+1。 操作结果:从串S中删除下标为pos的字符起长
char str[MAXLEN]; int length; }SString;
ቤተ መጻሕፍቲ ባይዱ
第4章 串
4.3 串的存储及实现 常用的实现方法:①定长顺序串
基本操作: 插入、删除、复制、判空、比较、 求串长、清空、连接、求子串。
参见P78~80页
第4章 串
4.3 串的存储及实现 常用的实现方法:②堆串
存储表示: 动态地分配一组地址连续的存储单元。
第4章 串
4.1 应用实例 4.2 串及其运算 4.3 串的存储结构及实现 4.4 串的模式匹配 4.5 实例分析与实现 4.6 算法总结
4.1 应用实例
应用实例:文本编辑软件 文本编辑程序是利用计算机进行文字加工的基本软件工
具,实现对文本文件的插入、删除等修改操作,甚至用于 报刊和书籍的编辑排版。常用的简单文本编辑程序Edit, 和文字处理软件WPS、Word等,究其实质,都是修改字符 数据的形式或格式。可用于文本编辑的程序很多,功能不 同且强弱差别很大,但基本操作是一样的,一般都包含串 的查找、插入和删除等基本操作。
起长度为 len 的子串。
例如: SubString (sub1,commander, 4, 3) sub1= man
SubString (sub2, commander, 4, 7)
sub2= ?
起始位置和子串长度之间存在约束关系!
SubString(sub3,beijing, 7, 2) = ?
基本操作: 赋值、插入、删除。
参见P81~82页
第4章 串
4.3 串的存储及实现
常用的实现方法:③块链串
存储表示:可用链表来存储串值,由于串的数据元素是一个字符,
typedef struct {
char *ch; int len; } HString;
NAME • •
INFORMATION
6 s a mp l e 4 l o o p
NAME •, 6 •, 4
INFORMATION
s a mp l e l o o p
4.3 串的存储及实现 常用的实现方法:②堆串
(1) StrAssign(S, chars) (2) StrInsert(S, pos, T) (3) StrDelete(S, pos, len)
………p106 }ADT String
第4章 串
4.2 串及其运算 基本操作:StrInsert (S, pos, T)
StrInsert (S, pos, T) 初始条件:串S和T存在,1≤pos≤StrLength(S)+1 。 操作结果:在串S的下标为pos的字符之前插入串T。
第4章 串
4.2 串及其运算
是由零个或多个字符组成的有限 序列。 S= a0a1a2…an-1 (n≥0)
子串:串中任意个连续的字符组成的子序列。 主串:包含子串的串相应地称为主串。
位置:字符在序列中的序号。子串在主串中的位置则 以子串的第一个字符在主串中的位置来表示。
相等:两个串的长度相等,并且对应位置的字符都相等。
sub3 = ?
第4章 串 4.2 串及其运算 基本操作:StrIndex (S, pos, T)
StrIndex (S, pos, T) 初始条件:主串S和T存在,T是非空串 操作结果:若主串 S 中存在和串 T 值相同的子串, 则
返回它在主串 S 中从第pos个字符开始第 一次出现的位置;否则函数值为0。
StrReplace (S, T, V) 初始条件:串S, T和 V 均已存在,且 T 是非空串。 操作结果:用V替换主串S中出现的所有与(模式
串)T相等的不重叠的子串。
例如:
S = abcaabcaaabca,T = bca, V = x S = axaxaax
第4章 串 4.2 串及其运算 基本操作
空串与 空白串
第4章 串
4.2 串及其运算
串的抽象数据类型的定义
ADT String{ 数据元素:D={ai| ai∈CharacterSet,记为V, i=1,2,…,n;n≥0} 数据关系:R={<ai,ai+1> | ai, ai+1∈V,i=1,2, …,n-1;n-1≥0 } 基本操作:
第4章 串 4.2 串及其运算 基本操作:SubString (Sub,S, pos, len)
SubString (Sub,S, pos, len) 初始条件:串 S 存在,1≤pos≤Length(S)
且0≤len≤Length(S)- pos +1。 操作结果:用Sub返回串 S 的第 pos 个字符
例如:
S = abcaabcaaabc, T = bca
StrIndex(S, 1,T) = 2
StrIndex(S, 4,T) = 6
第 4 章 串 给出一个由小写字母组成的串s和一个不超过 4.2 串及其运算s串的在长s度中的不正重整叠数地l重,复求出s 现所次有数长最度多不的小子于串l的。子 基本操作:StrReplace (S, T, V)