资源描述:
《第4章数据结构习题题目及答案串.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、基础知识题4.1简述下列每对术语的区别: 空串和空格串;串常量与串变量;主串和子串;串变量的名字和串变量的值;静态分配的顺序串与动态分配的顺序串。【解答】不含任何字符的串称为空串,其长度为0。仅含有空格字符的串称为空格串,其长度为串中空格字符的个数。空格符可用来分割一般的字符,便于人们识别和阅读,但计算串长时应包括这些空格符。空串在串处理中可作为任意串的子串。 用引号(数据结构教学中通常用单引号,而C语言中用双引号)括起来的字符序列称为串常量,其串值是常量。串值可以变化的量称为串变量。串中任意个连续的字符
2、组成的子序列被称为该串的子串。包含子串的串又被称为该子串的主串。子串在主串中第一次出现时的第一个字符的位置称子串在主串中的位置。串变量与其它变量一样,要用名字引用其值,串变量的名字也是标识符,串变量的值可以修改。串的存储也有静态存储和动态存储两种。静态存储指用一维数组,通常一个字符占用一个字节,需要静态定义串的长度,具有顺序存储结构的优缺点。若需要在程序执行过程中,动态地改变串的长度,则可以利用标准函数malloc()和free()动态地分配或释放存储单元,提高存储资源的利用率。在C语言中,动态分配和回收的存储单元都来自于
3、一个被称之为“堆”的自由存储区,故该方法可称为堆分配存储。类型定义如下所示:typedefstruct{ char *str; int length;}HString; 4.2设有串S=’good’,T=’I︼am︼a︼student’,R=’!’,求: (1)StringConcat(T,R) (2)SubString(T,8,7) (3)StringLength(T) (4)Index(T,’a’) (5)StringInsert(T,8,S)(6)Replace(T,SubString(T,8,7),’te
4、acher’)【解答】(1)StringConcat(T,R)=’I︼am︼a︼student!’(2)SubString(T,8,7)=’student’(3)StringLength(T)=14(4)Index(T, ’a’)=3(5)StringInsert(T,8,S)=’I︼am︼a︼goodstudent’(6)Replace(T, SubString(T,8,7),’teacher’)=’I︼am︼a︼teacher’ 4.3若串S1=‘ABCDEFG’,S2=‘9898’,S3=‘###’,S4=‘’,执行
5、concat(replace(S1,substr(S1,length(S2),length(S3)),S3),substr(S4,index(S2,‘8’),length(S2)))操作的结果是什么?【解答】concat(replace(S1,substr(S1,length(S2),length(S3)),S3),substr(S4,index(S2,‘8’),length(S2)))=concat(replace(S1,substr(S1,4,3),S3),substr(S4,2,4))=concat(replace(
6、S1,’DEF’,S3),’1234’)=concat(‘ABC###G’,’1234’)=‘ABC###G1234’ 4.4设S为一个长度为n的字符串,其中的字符各不相同,则S中的互异的非平凡子串(非空且不同于S本身)的个数是多少?【解答】长度为n的字符串中互异的非平凡子串(非空且不同于S本身)的个数计算如下:长度为1的子串有n个,长度为2的子串有n-1个,长度为3的子串有n-2个,……,长度为n-1的子串有2个,长度为n的子串有1个(按题意要求这个子串就是S本身,不能计算在总数内)。故子串个数为:(2+n)*(n-1)
7、/2 4.5KMP算法(字符串匹配算法)较Brute(朴素的字符串匹配)算法有哪些改进?【解答】KMP算法的最大特点是主串指针不回溯,在整个匹配过程中,对主串从头到尾扫描一遍,对于处理存储在外存上的大文件是非常有效的。虽然Brute(朴素的字符串匹配)算法的时间复杂度是O(n*m),但在一般情况下,其实际的执行时间近似于O(n+m),因此至今仍被采用。KMP算法仅当主串与模式间存在许多“部分匹配”的情况下才显得比Brute(朴素的字符串匹配)算法快得多。 4.6求串’ababaaababaa’的next函数值。【解答】
8、j1 2 3 4 5 6 7 8 9 10 1112t串a b a b a a a b a b a a next[j]0 1 1 2 3 4 2 2 3 4 5 6 4.7模式串t=’abcaabbcaabdab’,求模式串的next和nextval函数的值。【解答】j1 2 3 4 5