新编软件设计师(原高程级)教材可疑之处,欢迎有志之士讨论
新编的软件设计师教材 第460页
数据结构之串:
朴素的模式匹配算法
原文如下:
[函数] 以字符数组存储字符串,实现朴素的模式匹配算法。
int Index(char S[],char T[],int pos){
/*查找并返回模式串T在主串S中从pos开始的位置(下标),若T不是S的子串,则返回-1*/
int i,j,slen,tlen;
i=pos;j=0; /*i,j分别用于指示出主串字符和模式串字符的位置*/
slen=strlen(S);tlen=strlen(T);
while(i<slen && j<tlen){
if(S[i]==T[j]) {i++;j++;}
else {i=i-j+2;
j=1;
}
}/*while*/
if(j>=tlen) return i-tlen;
return -1;
}/* Index */
对于:
i=i-j+2;
j=1;
此两行不解,本人觉得就该是
i=i-j+1; /* 返回到i本次比较开始位置(S[i-j])的下一位置(S[i-j]+1) */
j=0; /* 模式串从头又开始T[0] */
各位同仁,请发表发表自己的意见!重在参与