李春葆《数据结构教程》(第4版)课后习题-串(圣才出品)

  • 格式:pdf
  • 大小:356.79 KB
  • 文档页数:5

下载文档原格式

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

第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。

实验题2编写一个程序algo4-2.cpp,实现链串的各种基本运算,并在此基础上设计一个程序exp4-2.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。

实验题3 编写一个程序exp4-3.cpp,实现顺序串的各种模式匹配运算,并在此基础上完成如下功能:

(1)建立目标串S="abcabcdabcdeabcdefabcdefg"和模式串t="abcdeabcdefab";

(2)采用简单匹配算法求t在s中的位置;

(3)对模式串t求next数组值和nextval数组值;

(4)采用KMP算法求t在s中的位置;

(5)采用修正后的KMP算法求t在s中的位置。

实验题4 一个文本串可用事先给定的字母映射表进行加密。例如,设字母映射表为:

则字符串“encrypt”被加密为“tkzwsdf”。设计一个程序exp4-4.cpp将输入的文本串进行加密后输出,然后进行解密并输出。

实验题5 采用顺序结构存储串,编写一个程序exp4-5.cpp,求用户输入串s中出现的第一个最长重复子串的下标和长度。