1
《数据结构(C++版)》复习提要与实验指导
1.7.3.4 4.3.4 实验提示

4.3.4 实验提示

1. 字符串匹配

程序设计思路

str1=“a0a1am

str2=“b0b1bn

从str1中找与b0匹配的字符ai,若ai=b0,则判定ai+1=b1,…,ai+n=bn;若都相等,则结果是子串,否则继续比较ai之后的字符。

2. 公共字符串

程序设计思路:设两个字符串的首结点指针分别为str1和str2,它们的长度分别记为len1和len2。不失一般性,设有len1≥len2,则它们最长的公共子串长度不超过len2。程序为查找最长的公共子串,考虑查找指定长度的所有公共子串的子问题。在指定长度从len2开始逐一递减的查找过程中,一旦找到了公共子串,程序最先找到的公共字符串就是最长公共子串。

3. 排版输出问题

程序设计思路:假定预处理后的正文存放在字符串s中,s由连续的单词组成,单词由连续的英文字母组成。在预处理过程中已产生以下信息:变量nw存放正文中单词的个数,数组元素sl(i)存放正文中第i个单词在s中的字符位置,sn(i)存放正文中第i个单词的长度。规定s中的字符位置从1开始计数,每个字符占一个位置。字符串s中的某个单词可用s(单词起始位置:单词终止位置)的子串形式来存取,并规定在字符串(或子串)赋值时,赋值号两端的字符串(或子串)长度必须相等。

下面列出了具体的程序,供读者参考。

程序1:字符串匹配

img112

img113

程序2:公共字符串

img114

img115

程序3:排版输出

img116

img117

img118