新编软件设计师(原高程级)教材可疑之处,欢迎有志之士讨论

2002past 2004-09-16 10:22:44
新编的软件设计师教材 第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] */



各位同仁,请发表发表自己的意见!重在参与

...全文
341 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
2002past 2004-09-22
  • 打赏
  • 举报
回复
结贴了,虽然此贴没分给大家,在此对于积极参与、思考的同仁至以谢意,大家有空多探讨探讨,共同学习、进步。祝大家在软设考试中取得好的成绩!
2002past 2004-09-20
  • 打赏
  • 举报
回复
希望看到有不同见解!
同志们努力!
postage 2004-09-20
  • 打赏
  • 举报
回复
438页,查找运算里,while循环条件里竟然是k<i,应为i<k.今天仔细看才知道。印刷的错误太多了。
152-153页,页面置换算法,lru,fifo表格中大都是错的。
wenyanshan110 2004-09-19
  • 打赏
  • 举报
回复
是这样的,在清华大学的那本书上,数组的第一个单元习惯用来表示数组的长度,所以从第二个单元才是第一个元素,可以看看那本书就知道了,不过教程上还是错了,可能他是直接从别人地方抄来,没有仔细考虑吧
Wyi23 2004-09-18
  • 打赏
  • 举报
回复
是的,
应该是
  i=i-j+1; /* 返回到i本次比较开始位置(S[i-j])的下一位置(S[i-j]+1) */
j=0;   /* 模式串从头又开始T[0] */
C或C++的数组是从0开始
可能是编者弄错了
tianxingjian1273 2004-09-18
  • 打赏
  • 举报
回复
mark一下先
robertxiao 2004-09-17
  • 打赏
  • 举报
回复
同意楼主的意见
2002past 2004-09-17
  • 打赏
  • 举报
回复
CSDN上的那些带星的高手都干嘛去了呢
可否出来也评评看看呢?
suncj2222 2004-09-17
  • 打赏
  • 举报
回复
唉,编者也不会好好的检查一下。
祝各位考试顺利。
2002past 2004-09-17
  • 打赏
  • 举报
回复
to postage(jh):

非也
把初始化变量J=0改为J=1
这样的话还得改
while(i<slen && j<tlen){

为:
while(i=<slen && j=<tlen){

别忘了数组是从0开始的
postage 2004-09-17
  • 打赏
  • 举报
回复
楼主说得没错。本来就是错的。
还有一方法是把初始化变量J=0改为J=1,那就不用改循环体了。
2002past 2004-09-17
  • 打赏
  • 举报
回复
朴素的模式匹配算法

的设计思想就是从本次搜索i的初始位置的下一位置再比较

其实串上考试的重点在于KMP匹配上,最晚看其NEXT函数,想想大二搞课程设计时,这块就有点不清楚,算法的思想有时候比较好接受,但在其实现上,有时更令人佩服!
KbGolden 2004-09-17
  • 打赏
  • 举报
回复
楼主说的对,应该从当前位置的下一值继续查找~~~~
song3721 2004-09-17
  • 打赏
  • 举报
回复
我去看看。。。。
laiyongjun 2004-09-17
  • 打赏
  • 举报
回复
现在我还没看到这里来,不过它的质量确实不敢恭维,我看操作系统这一节发现里面有一些文字上的错误,因为时间紧,可以没有审好的原因。

2,947

社区成员

发帖
与我相关
我的任务
社区描述
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
c1认证c4javac4前端 技术论坛(原bbs)
社区管理员
  • 软件水平考试社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧