李春葆《数据结构教程》(C++语言描述)配套题库【课后习题】(串)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

{
i=ch-'A'+10;
num[i]++;
}
}
(2)设计一个算法,将一个链串 S 中的所有子串”abc”删除。 答: String deleteabc(String S) {
String t=’abc’; String nstr; int i=0,j=0,k=0;
6 / 11
圣才电子书 十万种考研考证电子书、题库视频学习平台
1 / 11
圣才电子书 十万种考研考证电子书、题库视频学习平台
www.100xuexi.com
于主串中,因此答案为 D 项。
(3)对于一个链串 s,查找第一个元素值为 x 的算法的时间复杂度为______。 A.O(1) B.O(n) C.O(n2) D.以上都不对 【答案】B 【解析】在链串中按值查找元素时,最坏的情况是每一个元素都需要从头开始逐一查找, 因此其时间复杂度为 O(n),B 项正确。
(5)设有两个串 p 和 q,求 q 在 p 中首次出现的位置的运算称作______。 A.连接
2 / 11
圣才电子书
www.100xuexi.com
B.模式匹配
十万种考研考证电子书、题库视频学习平台
C.求子串
D.求串长
【答案】B
【解析】由模式匹配的定义可知,这种操作叫做模式匹配。
(6)已知 t=“abcaabbcabcaabdab”,该模式串的 next 数组值为______。 A.-1,0,0,0,1,1,2,0,0,1,2,3,4,5,6,0,1 B.0,1,0,0,1,1,2,0,0,1,2,3,4,5,6,0,1 C.-1,0,0,0,1,1,2,0,0,1,2,3,4,5,6,7,1 D.-1,0,0,0,1,1,2,3,0,1,2,3,4,5,6,0,1 【答案】A 【解析】next 数组中存放的值为该模式串每个字符的部分匹配信息,即每一个字符前 有多少个字符与模式串开始的字符相同,由此定义可知,该模式串的 next 数组值应为 A 项。
4 / 11
圣才电子书
www.100xuexi.com
答:
十万种考研考证电子书、题库视频学习平台
三、算法设计题 (1)设计一个算法,计算一个顺序串 s 中每个字符出现的次数。 答: void CountFre() {
int i,num[36]; char ch; for(i=0;i<36;i++)
二、问答题 (1)若 s1 和 s2 为串,给出使 s1//s2=s2//s1 成立的所有可能的条件(其中,“//” 表示两个串连接的运算符)。 答:①s1 和 s2 之中至少有一个为空串 ②s1 和 s2 的值相等 ③s1 和 s2 之中某一个串可由另一个串经过重复得到。
3 / 11
圣才电子书 十万种考研考证电子书、题库视频学习平台
(4)对于一个链串 s,查找第 i 个元素的算法的时间复杂度为______。 A.O(1) B.O(n) C.O(n2) D.以上都不对 【答案】B 【解析】在链串中查找第 i 个元素时,由于元素的位置不确定,最坏的情况为第 i 个元 素为最后一个元素,需要查找 n 次,因此其时间复杂度为 O(n),B 项正确。
②对于模式串 t(t=t0t1…tm-1),求 next 数组时,next[i]在什么条件下取-1。 答:当 i=0 时,即 next[0]=-1。
(4)设目标串为 s=“abcaabbcaaabababaabca”,模式串为 p=“babab”。 ①计算模式 P 的 答:-1,0,1,2,0。 ②不写算法,只画出利用 KMP 算法进行模式匹配时的每一趟的匹配过程。
(3)在串的模式匹配中,KMP 匹配算法是有用的办法,回答以下问题: ①KMP 算法的基本思想是什么? 答:KMP 算法的思想是,设 s 为目标串、t 为模式串,并设 i 指针和 j 指针分别指示目 标串和模式串中待比较的字符,令 i 和 J 的初值均为 0。若有 si=tj,则 i 和 j 分别增 1;否则, i 不变,j 退回到 j=next[ j]的位置(即模式串右滑),比较 si 和 tj,若相等则指针各增 1.否 则 j 再退回到下一个 j=next[ j]的位置(即模式串继续右滑),再比较 si 和 tj。依此类推,直 到出现下列两种情况之一,一种情况是 j 退回到某个 J=next[ j]位置时有 si=tj,则指针各增 1 后继续匹配;另一种情况是 j 退回到 j=-1 时,此时令 i、j 指针各增 l,即下一次比较 Si+1 和 t0。
(2)以下______是“abcd32lABCD”串的子串。 A.abcd B.B21AB C.”abcABC” D.“21AB” 【答案】D 【解析】串需要用引号引起来,没有引号的只是字符的罗列而不是串,因此 AB 项错误; 由在一个串中由任意连续的字符组成的子序列称为该串的子串可知,C 项中字符串并不包含
5 / 11
圣才电子书
www.100xuexi.com
num[i]=0;
十Hale Waihona Puke Baidu种考研考证电子书、题库视频学习平台
while((ch=getchar()))
{
if(('0'<=ch)&&(ch<='9'))
{
i=ch-'0';
num[i]++;
}
else if(('A'<= ch)&&(ch <='Z'))
圣才电子书 十万种考研考证电子书、题库视频学习平台
www.100xuexi.com
第4章 串
一、单项选择题 (1)串是一种特殊的线性表,其特殊性体现在______。 A.可以顺序存储 B.数据元素是单个字符 C.可以链接存储 D.数据元素可以是多个字符 【答案】B 【解析】串和线性表的唯一区别是串中的每个元素是单个字符,而线性表中的每个元素 可以是自定义的其他类型,因此答案为 B 项
www.100xuexi.com
(2)在 KMP 算法中计算模式串的 next,当 j=0 时,为什么要取 next[0]=-1? 答:若将 next[0]的值设置为 0,由于在 KMP 算法中匹配失败进行回溯时,要回溯到 next[ j]=j 的位置,则每一次回溯都会回溯到 next[0]处,这样使得 KMP 算法失去了其意义, 因此要取 next[0]=-1;
相关文档
最新文档