数据结构第04章 串
- 格式:doc
- 大小:89.31 KB
- 文档页数:17
第四章串一、选择题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),substr(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.0 B.012121111212 C.0 D.06.字符串‘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 数组的值为()。
串-第4章-《数据结构题集》答案解析-严蔚敏吴伟民版习题集解析部分第4章串——《数据结构题集》-严蔚敏.吴伟民版源码使⽤说明链接☛☛☛课本源码合辑链接☛☛☛习题集全解析链接☛☛☛相关测试数据下载链接☛本习题⽂档的存放⽬录:数据结构\▼配套习题解析\▼04 串⽂档中源码的存放⽬录:数据结构\▼配套习题解析\▼04 串\▼习题测试⽂档-04源码测试数据存放⽬录:数据结构\▼配套习题解析\▼04 串\▼习题测试⽂档-04\Data⼀、基础知识题4.1❶简述空串和空格串(或称空格符串)的区别。
4.2❷对于教科书4.1节中所述串的各个基本操作,讨论是否可由其他基本操作构造⽽得,如何构造?4.3❶设s = ‘I AM A STUDENT’,t = ‘GOOD’,q = ‘WORKER’。
求:StrLength(s),StrLength(t),SubString(s, 8, 7),SubString(t, 2, 1),Index(s, ‘A’),Index(s, t),Replace(s, ‘STUDENT’, q),Concat(SubString(s, 6, 2), Concat(t, SubString(s, 7, 8)))。
4.4❶已知下列字符串a = ‘THIS’, f = ‘A SAMPLE’, c = ‘GOOD’, d = ‘NE’,b = ‘ ’.s = Concat(a, Concat(SubString(f, 2, 7), Concat(b, SubString(a, 3, 2)))),t = Replace(f, SubString(f, 3, 6), c),u = Concat(SubString(c, 3, 1), d),g = ‘IS’,v = Concat(s, Concat(b, Concat(t, Concat(b, u)))),试问:s,t,v,StrLength(s),Index(v, g),Index(u, g)各是什么?4.5❶试问执⾏以下函数会产⽣怎样的输出结果?void demonstrate(){StrAssign(s, ‘THIS IS A BOOK’);Replace(s, SubString(s, 3, 7), ‘ESE ARE’);StrAssign(t, Concat(s, ‘S’));StrAssign(u, ‘XYXYXYXYXYXY’);StrAssign(v, SubString(u, 6, 3));StrAssign(w, ‘W’);printf(‘t=’, t, ‘v=’, v, ‘u=’, Replace(u, v, w));}//demonstrate4.6❷已知:s = ‘(XYZ)+*’,t = ‘(X+Z)*Y’。
课程教案课程名称:数据结构授课教师:学习对象:任课时间:一、学生情况分析数据结构是计算机专业的一门核心专业课程。
学生在前期的学习中已经学习了C语言程序设计课程。
通过本课程学习使学生对提高编写程序的能力以及解决实际问题的能力。
二、课程教学目标《数据结构》是计算机学科中一门核心专业基础课。
主要介绍如何合理地组织数据、有效地存储和处理数据,正确地设计算法以及对算法的分析和评价。
通过本课程的学习,使学生深透地理解数据结构的逻辑结构和物理结构的基本概念以及有关算法,培养基本的、良好的程序设计技能,编制高效可靠的程序,为学习操作系统、编译原理和数据库等课程奠定基础。
三、课程教学内容第一章绪论教学内容:1)什么是数据结构2)抽象数据类型概念;数据类型;数据抽象与抽象数据类型;用于描述数据结构的语言3)数据结构的抽象层次4)算法定义5)性能分析与度量;算法的性能标准;算法的后期测试;算法的事前估计;空间复杂度度量;时间复杂度度量;时间复杂度的渐进表示法;教学要求:了解:数据结构基本概念及数据结构的抽象层次了解:抽象数据类型概念了解:算法的定义及算法特性掌握:算法的性能分析与度量方法第二章线性表教学内容:1)线性表的定义和特点2)线性表的顺序存储及查找、插入和删除操作3)线性表的链式存储及查找、插入和删除操作4)使用线性表的实例教学要求:了解:线性表的定义和特点熟练掌握:线性表的顺序存储结构的查找、插入和删除等基本操作熟练掌握:单链表、循环链表及双向链表的定义及实现掌握:熟练掌握单链表的应用方法第三章栈和队列教学内容:1)栈:栈的抽象数据类型;栈的顺序存储表示;栈的链式存储表示2)队列:队列的抽象数据类型;队列的顺序存储表示;队列的链式存储表示3)队列的应用举例教学要求:熟练掌握:栈的定义及实现熟练掌握:队列的定义及实现掌握:能运用栈和队列解决简单实际问题教学:内容:1)字符串的抽象数据类型2)字符串操作的实现3)字符串的模式匹配教学要求:熟练掌握:字符串的定义方式熟练掌握:字符串的各种操作的实现了解:字符串的模式匹配算法第五章数组和广义表教学:内容:1)数组的定义和初始化2)作为抽象数据类型的数组的顺序存储方式教学要求:了解:作为抽象数据类型的数组的定义熟练掌握:顺序表的数组定义方式及实现第六章树和二叉树教学内容:1)树和森林的概念:树的定义;树的术语;树的抽象数据类型;森林的概念2)二叉树:二叉树的定义;二叉树的性质;二叉树的抽象数据类型3)二叉树的表示:数组表示;链表存储表示4)二叉树的遍历:中序遍历;前序遍历;后序遍历;应用二叉树遍历的实例;二叉树的中序非递归算法5)线索化二叉树:线索;中序线索化二叉树;前序与后序的线索化6)树与森林:树的存储表示;森林与二叉树的转换;树的遍历;森林的遍历7)二叉树的计数8)霍夫曼树:路径长度;霍夫曼树;霍夫曼树编码教学要求:了解:树和森林的概念掌握:二叉树的概念、性质及二叉树的表示熟练掌握:二叉树的遍历方法掌握:线索化二叉树的特性及寻找某结点的前驱和后继的方法掌握:树和森林的实现及遍历方法掌握:二叉树的计数方法及从二叉树遍历结果得到二叉树的方法掌握:霍夫曼树的实现方法及霍夫曼编码的概念第七章图教学内容:1)图的基本概念:图的基本概念;图的抽象数据类型2)图的存储表示:邻接矩阵;邻接表;邻接多重表3)图的遍历与连通性;深度优先搜索;广度优先搜索;连通分量4)最小生成树:克鲁斯卡尔算法;普里姆算法教学要求:掌握:图的基本概念和图的存储表示熟练掌握:图的两种遍历方法与求解连通性问题的方法掌握:构造最小生成树的Prim和Kruskal方法教学内容:1)静态查找表:顺序表的查找;有序表的查找;索引顺序表的查找2)二叉排序树:二叉排序树上的搜索、插入和删除教学要求:熟练掌握:静态搜索表的顺序搜索和折半搜索方法熟练掌握:二叉搜索树的表示、搜索、插入、删除算法及其性能分析方法第十章内部排序教学内容:1)概述2)插入排序:直接插入排序;对分插入排序;链表插入排序;希尔排序3)选择排序:直接选择排序;堆排序教学要求:掌握:排序的基本概念和性能分析方法掌握:插入排序、选择排序、等内排序的方法及性能分析方法单元名称:第一讲:绪论一、教学目标1.了解《数据结构》课程的体系结构2.掌握本章介绍的各种基本概念和术语3.了解数据结构的二元组表示4.掌握逻辑结构与物理结构之间的映像关系。
自考《数据结构》各章要点一第一章概论数据就是指能够被计算机识别、存储和加工处理的信息的载体。
数据元素是数据的基本单位,可以由若干个数据项组成。
数据项是具有独立含义的最小标识单位。
数据结构的定义:·逻辑结构:从逻辑结构上描述数据,独立于计算机。
·线性结构:一对一关系。
·线性结构:多对多关系。
·存储结构:是逻辑结构用计算机语言的实现。
·顺序存储结构:如数组。
·链式存储结构:如链表。
·稠密索引:每个结点都有索引项。
·稀疏索引:每组结点都有索引项。
·散列存储结构:如散列表。
·对数据的操作:定义在逻辑结构上,每种逻辑结构都有一个运算集合。
·常用的有:检索、插入、删除、更新、排序。
·数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。
·原子类型:由语言提供。
·结构类型:由用户借助于描述机制定义,是导出类型。
抽象数据类型ADT:·是抽象数据的组织和与之的操作。
相当于在概念层上描述问题。
·优点是将数据和操作封装在一起实现了信息隐藏。
程序设计的实质是对实际问题选择一种好的数据结构,设计一个好的算法。
算法取决于数据结构。
算法是一个良定义的计算过程,以一个或多个值输入,并以一个或多个值输出。
评价算法的好坏的因素:·算法是正确的;·执行算法的时间;·执行算法的存储空间(主要是辅助存储空间);·算法易于理解、编码、调试。
时间复杂度:是某个算法的时间耗费,它是该算法所求解问题规模n的函数。
渐近时间复杂度:是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。
评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度。
算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。
时间复杂度按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O(n^2)、立方阶O(n^3)、……k次方阶O(n^k)、指数阶O(2^n)。
《数据结构》第04章在线测试《数据结构》第04章在线测试剩余时间:43:12答题须知:1、本卷满分20分。
2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。
3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。
第一题、单项选择题(每题1分,5道题共5分)1、若串S="abcdef",则其非空子串数目为________。
A、6B、12C、21D、222、字符串是一种特殊的线性表,其特殊性在于它的数据元素只能是________。
A、字符B、字符串C、数字D、字母3、设有三个串,s1="How", s2=" are", s3=" you",则这三个串连接后得到的结果串是________________________。
A、"Howareyou"B、"How are you"C、"How are you."D、" How are you"4、串是一种特殊的线性表,其特殊性体现在________。
A、可以顺序存储B、数据元素是一个字符C、可以链接存储D、数据元素可以是多个字符5、空格串的长度为________。
A、0B、1C、串中空格的个数D、第二题、多项选择题(每题2分,5道题共10分)1、在定长顺序存储表示中,对串长的表示方法有__________。
A、用域变量表示B、用下标为0的数组分量表示C、在串值后加结束标记字符D、无法明确表示2、以下关于串的存储方式的说法中正确的是__________。
A、定长顺序表示和堆分配表示都是串的顺序存储表示B、定长顺序表示的串的存储空间是编译时预先分配的一个比较大的连续空间C、堆分配表示的串的存储空间是在程序执行过程中动态分配的D、堆分配存储表示时的空串不占用连续的存储区3、两个串相等的充分必要条件是__________。
数据结构第四章树和二叉树习题04 树和二叉树【单选题】1. 下列选项中不属于树形结构逻辑特征的是(C)。
A、有的结点有多个直接后继 B、有的结点没有直接后继 C、有的结点有多个直接前驱 D、有的结点没有直接前驱2. 下列叙述中错误的是(B)。
A、树的度与该树中结点的度的最大值相等B、二叉树就是度为2的有序树C、有5个叶子结点的二叉树中必有4个度为2的结点D、满二叉树一定是完全二叉树3. 一棵二叉树中第6层上最多有(C)个结点。
A、2 B、31C、32D、644. 一棵高为k的二叉树最少有(B)个结点。
A、k-1 B、kC、k+1D、2k-1E、2k-15. 一棵高为k的二叉树最多有(C)个结点。
A、k+1 B、2k-1 C、2k-1 D、2k E、2k+16. 一棵高为k的完全二叉树最少有(B)个结点。
A、2k-1-1 B、2k-1 C、2k-1 D、2k7. 一棵高为k的完全二叉树最多有(C)个结点。
A、2k-1-1 B、2k-1 C、2k-1 D、2k8. 一棵度为3的树中,度为3的结点有2个,度为2的结点有2个,度为1的结点有2个,则度为0的结点有(D)个。
A、4 B、5 C、6 D、79. 含1000个结点的完全二叉树的高度为(B)。
A、9 B、10 C、11 D、1210. 设完全二叉树T中含有n个结点,对这些结点从0开始按层序进行编号,若编号为i的结点有左孩子,则左孩子的编号为(D)。
A、2(i-1)B、2i-1C、2iD、2i+1E、2(i+1)11. 已知一算术表达式的中缀形式为A+B*C-D/E,后缀形式为ABC*+DE/-,其前缀形式为(D)。
A、-A+B*C/DE B、-A+B*CD/EC、-+*ABC/DED、-+A*BC/DE12. 已知一棵二叉树的先序序列为abdegcfh,中序序列为dbgeachf,则该二叉树的后序序列为(B)。
A、gedhfbca B、dgebhfca C、abcdefgh D、acbfedhg13. 先序遍历与中序遍历所得遍历序列相同的二叉树为(D)。
数据结构在线测试01-08章《数据结构》第01章在线测试A、顺序结构B、链式结构C、线性结构D、非线性结构E、动态结构F、静态结构3、下列说法中,不正确的是________。
A、数据是数据元素的基本单位B、数据元素是数据中不可分割的最小标识单位C、数据元素可由若干个数据项组成D、数据项可由若干个数据元素组成4、影响程序运行时间的因素包括______________。
A、书写程序的语言B、问题的规模C、编译器产生的机器代码的质量D、计算机的运行速度E、算法的策略F、输出数据量5、数据结构被形式化的定义为(D,S),其中D、S分别是________的有限集合。
A、数据元素B、数据操作C、数据存储D、数据关系第三题、判断题(每题1分,5道题共5分)1、数据的物理结构是指数据和关系在计算机内的实际存储形式。
正确错误2、算法原地工作的含义是指运行时不需要任何临时的辅助空间。
正确错误3、数据对象是一组数据元素的集合。
正确错误4、计算机算法必须具备的特性有:输入、输出、易读性、稳定性和安全性。
正确错误5、任何一个算法的设计取决于数据的逻辑结构,而算法的实现则依赖于所采用的存储结构。
正确错误测试结果如下:1.4[单选][对]树型结构和图结构都属于________。
1.5[单选][对]下列函数中,时间复杂度最小的是________。
2.1[多选][对]根据元素之间关系的不同特性,通常可有下列基本结构________。
2.2[多选][对]从逻辑上可以把数据结构分为________。
2.3[多选][对]下列说法中,不正确的是________。
2.4[多选][对]影响程序运行时间的因素包括______________。
2.5[多选][对]数据结构被形式化的定义为(D,S),其中D、S分别是________的有限集合。
3.1[判断][对]数据的物理结构是指数据和关系在计算机内的实际存储形式。
3.2[判断][对]算法原地工作的含义是指运行时不需要任何临时的辅助空间。
第四章串一、选择题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数组的值为()。
第四章串教学目的与要求本章目的是介绍串的逻辑结构、存储结构及其串上的基本运算。
重点和难点本章重点是掌握串上实现的模式匹配算法,其也是本章难点。
教学内容第一节串的基本概念4.1.1 基本概念串:是零个或多个字符组成的有限序列。
串中所包含的字符个数称为串的长度。
空串:长度为0的串称为空串,它不包含任何字符。
空白串:仅由一个或多个空格组成的串称为空白串。
应注意空串和空白串的区别。
子串、主串:串中任意个连续字符组成的子序列称为该串的子串,包含子串的串相应地称为主串。
空串是任意串的子串,任意串是其自身的子串。
子串在主串中的位置:通常,将子串在主串中首次出现时子串首字符对应的主串中的序号定义为子串在主串中的位置。
2.串的基本运算(1)求串的长度(Length)(2)串复制 (Copy):(3)串联接 (Concat)(4)串比较 (Compare)(5)字符定位(Index)除上述基本运算外,串运算还有求子串、子串的定位、子串的置换等操作。
这些操作,一般可由这些基本操作实现。
第二节串的存储结构4.2.1串的顺序存储1.静态存储分配的顺序串顺序串最简单的描述形式是直接使用定长的字符数组来定义。
其定义形式为# define maxstrsize 256typedef char Seqstring[maxstrsise];利用类型描述符Seqstrsring可定义数组变量存储串,利用特定字符表示串的结束(C语言用转义字符’\0’) 。
例如Seqstrstring s; 变量s可存储长度不超过255个字符的字符串,以’\0’作为串的结束。
顺序串的类型定义也可以象线性表的顺序存储一样,在定义字符数组的基础上,引入描述长度的成员。
其定义形式为# define maxstrsize 256typedef struct {char ch[maxstrsise];int length;}Sqestring;(2)动态存储分配的顺序串(堆)上述两种方式的共同缺点是主串值的存储空间是静态分配的是定长的。
动态分配则克服了上述缺点,其余定义形式为typedef struct {char *ch;int length;}Hstring;成员ch为指针型,若串非空,按实际需要动态分配存储空间,ch指向其起始地址,否则ch为FULL。
成员length存储串长度。
(3)串的链式存储用单链表的方式来存储串值,就是串的链式存储,简称为链串。
每个结点可以存储一个字符(数据域data为字符型),也可以存储多个字符(数据域data定义为字符型数组)。
3.基本运算的实现串匹配算法很多,这里只讨论的是一种简单的朴素的串匹配算法。
在串匹配中,一般将主串称为目标(串),子串称为模式(串)。
设T为目标串,设P为模式串。
串匹配实际上是对合法的位置0≤i ≤n-m,依次将目标串中的子串T[i..i+m-1]和模式串P[0..m-1]进行比较,若相等,则称从位置i开始的匹配成功,否则,则称从位置i 开始的匹配失败。
位置i称为位移,匹配成功时,位置i称为有效位移,匹配失败时,位置i称为无效位移。
(1) 顺序串上的子串的定位运算(模式匹配)算法思想:通过一个循环依次检查n-m+1个合法的位移i(0≤i≤n-m)是否为有效位移。
i初值为0,终值为n-m,其确定了目标串中子串的起始位置,每趟匹配结束后通过i值加1(i++)使i指向下一合法位移。
C语言算法:Int naivestrmatch(Seqstring T, Seqstring P){//查找模式P在目标T中首次出现位置,成功时返回有效位移i,失败返回-1int i,j,k;int m=P.length, n=T.length;//模式和目标串的长度for (i=0;i<=n-m;i++) //循环控制匹配的趟数,其由合法位移的个数确定{ j=0;k=i; //确定模式串起始位置j、目标串动中子串的起始位置k,即合法位移iwhile (j<m&&T.ch[k]==P.ch[j]) //循环判定i是否为有效位移(子串和模式串中对应位置字符逐一比较){ k++; j++; }if (j==m) //退出while循环若j==m说明匹配成功return(i);}return –1; //退出外循环,说明没有有效位移,匹配失败}算法时间复杂度为O(n-m+1)m)(2)链串上的子串的定位运算(模式匹配)算法思想:算法思想与顺序串上的子串的定位运算完全相同。
但应注意,存储结构不同将导致算法实现时具体操作的不同。
C语言算法:Linkstrnode *linkstrmatch(Linkstring T,Linkstring P){ //查找模式P在目标T中首次出现位置,成功时返回有效位移shift,失败返回NULLLinkstrnode *shift,*t1,*p1;Shift=T;t1=shift;p1=P;//工作变量初始设置t1指向子串的起始位置,p1指向模式的起始位置while (t1&&p1) //循环控制匹配 p1为NULL 匹配成功,t1为NULL且 p1不为NULL 匹配失败{if (t1->data==p1->data){t1=t1->next; p1=p1->next; }else{ shift=shift->next; t1=shift;p1=P;}} //对应结点字符相等,t1,p1后移指向下一结点,否则,合法位移shift后移指向下一子串,t1、p1重新定位开始下趟匹配。
if (p1==NULL)return shift;elsereturn NULL;}//退出循环后,判定匹配成功与否算法时间复杂度与顺序串上的子串的定位运算相同。
分析:顺序串和链串上实现串的模式匹配,算法思想相同,但应注意,存储结构不同所导致的算法实现时具体操作上的区别。
在顺序串上位移为整数,链串上位移为结点的地址;子串与模式匹配时工作变量后移在顺序串上通过加1实现,链串上靠指针变量后移实现;匹配成功与否的判令条件顺序串上为j==m,链串上为p==NULL。
对于不同的存储结构能够写出算法这是学习数据结构的基本要求,改变存储结构要求应写出算法这也是一个重点。
这一点大家应给予足够的重视。
应用举例算法阅读题1.下列算法的功能是比较两个链串的大小,其返回值为:-1 s1<s2comstr(s1,s2)= 0 s1=s21 s1>s2请在空白处填入适当的内容。
〖2001〗int comstr(linkstring s1,linkstring s2){//s1和s2为两个链串的头指针while(s1&&s2) {if(s1->data<s2->data) return –1;if(s1->data>s2->data) return 1;①②}if( ③ ) return –1;if( ④ ) return 1;⑤ ;}〖分析〗该题考核点是串的比较操作。
While型循环通过指针s1、s2将两个串中字符逐一比较,若发现不等字符,则不等字符的大小就是两个串的大小;若所比较字符均相等,直到有串被扫描完为止,退出循环。
然后判断,若某个串未被扫描完,则其值大,若两个串同时被扫描完,则两个串相等。
〖答案〗①s1=s1->next; ② s2=s2->next; ③ s2(或s2!=NULL) ④ s1(或s1!=NULL) ⑤ return 02.编写算法实现现两个串的连接。
算法如下:void stringcat(Hstring S,Hstring T){char *p,*q;p=S.ch+S.length;q=t.ch;while(p<S.ch+maxsize&&q<T.ch+T.length) *p++ =*q++;if(q<T.ch+maxsize) S.lengh=maxsize;else S.length=S.lengh+T.length;}3.删除主串中所有指定子串。
算法如下:void delsubstring(Hstring S,Hstring T) {int i=0,j,k;while(i<S.length){for(j=i,k=0;k<T.length;j++,k++)if(S.ch[j]!=T.ch[k])break;if(k>=T.length){while(j<S.length){S.ch[j-T.length]=S.ch[j];j++;}S.length=S.length-T.length;}elsei++;}}【历届试题分析】一、选择题1.下所述中正确的是()〖2001〗A.串是一种特殊的线性表B.串的长度必须大于零C.串中元素只能是字母D.空串就是空白串〖答案〗A2.若目标串的长度为n,模式串的长度为[n/3],则执行模式匹配算法时,在最坏情况下的时间复杂度是()〖2001〗A.O(n/3) B.O(n) C.O(n2) D.O(n3)〖分析〗最坏情况下模式匹配的时间复杂度为O((n-[n/3]+1)*[n/3]),由于n和[n/3]是同阶的,所以,时间复杂度可写为O(n2)。
〖答案〗C3.设有两个串T和P,求P在T中首次出现的位置的串运算称作()〖2003〗A.联接B.求子串C.字符定位D.子串定位〖分析〗该题考核点是串的基本操作。
〖答案〗D4.为查找某一特定单词在文本中出现的位置,可应用的串运算是()〖2002〗A.插入B.删除C.串联接D.子串定位〖答案〗D5.已知函数Sub(s,i,j)的功能是返回串s中从第i个字符起长度为j的子串,函数Scopy(s,t)的功能为复制串t到s。
若字符串S="SCIENCESTUDY",则调用函数Scopy(P,Sub(S,1,7))后得到( )〖2002〗A.P="SCIENCE" B.P="STUDY"C.S="SCIENCE" D.S="STUDY"〖分析〗该题考核点是串的基本操作,函数Scopy(P,Sub(S,1,7))将串中子串″SCIENCE″复制到P中,而串S值未变。
正确答案为A。
〖答案〗A二、填空题6.在串S="structure"中,以t为首字符的子串有12个。
〖2001〗〖分析〗该题考核点是子串的概念。
其中存在两个长度为1的子串。
〖答案〗127.串S="I am a worker"的长度是________。