鱼C论坛

 找回密码
 立即注册
查看: 77|回复: 0

关于KMP算法 返回值为啥是 0

[复制链接]
最佳答案
9 
发表于 2018-11-6 10:14:57 | 显示全部楼层 |阅读模式
5鱼币
朋友们 帮忙 看一下  我 觉着没啥问题 昂  为啥 结果 返回结果是0  而不是  想要的 位置勒  谢啦啦
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. typedef struct
  4. {
  5.         char *ch;
  6.         int length;
  7. }str;

  8. void getnext(str T,int *next)
  9. {
  10.         int j = 0, i = 1;
  11.         next[1] = 0;
  12.         while(i<T.length)
  13.         {
  14.                 if(j == 0 || T.ch[i] == T.ch[j])
  15.                 {     
  16.                         i++;
  17.                         j++;
  18.                        
  19.                        
  20.                         if(T.ch[i] != T.ch[j])
  21.                                 next[i] = j;
  22.                         else
  23.                                 next[i] = next[j];
  24.                        
  25.                 }
  26.                 else
  27.                         j = next[j];
  28.         }
  29. }

  30. int KMP(str S ,str T,int next[])
  31. {
  32.         int i=1,j=1;
  33.         getnext(T,next);

  34.         while(i <= S.length && j <= T.length)
  35.         {
  36.                 if(0 == j || S.ch[i] == T.ch[i])
  37.                 {
  38.                         i++;
  39.                         j++;
  40.                 }
  41.                 else
  42.                         j = next[j];
  43.         }
  44.         if(j > T.length)
  45.                 return i - T.length;
  46.         else
  47.                 return 0;
  48. }

  49. int main()
  50. {
  51.         str s,t;
  52.        
  53.         s.length = 19;
  54.         s.ch = (char *)malloc((s.length+1)*sizeof(char));
  55.         s.ch = " gsdgsdababaaabalilg";

  56.         t.length = 9;
  57.         t.ch = (char *)malloc((t.length+1)*sizeof(char));
  58.         t.ch = "ababaaaba";
  59.        
  60.         int next[255];
  61.         int a;

  62.         a = KMP(s,t,next);

  63.         printf("%d \n",a);


  64.         return 0;
  65. }
复制代码
   

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号

GMT+8, 2018-11-17 12:10

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表