该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

我自己写的KMP算法:

int nt[256];

void get_next1(char* T, int next[], int tlen)

{

int i = 0;

int j = 1;

next[0] = -1;

while( j

{

if ( T[i] == T[j]  )

{

next[j] = 0;

i++;

}

else

{

next[j] = i;

i = 0;

}

j++;

}

}

int Index_KMP1(char* S, char* T,int slen, int tlen)

{

int i=0, j=0;

while( j

{

if( j==-1 || S[i] == T[j] )

{

i++; j++;

}

else

{

j = nt1[j];

}

}

if( j == tlen )

{

return i-j;

}

else

{

return -1;

}

}

int main(int argc, char* argv[])

{

char ch[] = "aaaaa";

int len = (int)strlen(ch);

get_next1(ch, nt1, len);

for(int i=0; i

{

printf("%d[%c]=%d\n", i, ch[i], nt1[i]);

}

char sch[] = "abaavaaaaaab";

//char sch[] = "aawsdvddfabcdabceabcdfdwdasd";

int slen = (int)strlen(sch);

int ret = Index_KMP1(sch, ch, slen, len);

if(ret != -1)

{

char* tmp = sch + ret;

printf("%d, %s\n", ret, tmp);

}

else

printf("not find\n");

return 0;

}

我发现在数据结构的书中,用的SString类型,它的第一位是该字符的长度,所以和我们平时所需要的KMP算法不太兼容。

有什么问题,可以发到我的邮箱:bobyuworker@126.com

kmp算法的c语言,KMP算法 纯C实现相关推荐

  1. k均值聚类算法案例 r语言iris_K-means算法原理

    聚类的基本思想 俗话说"物以类聚,人以群分" 聚类(Clustering)是一种无监督学习(unsupervised learning),简单地说就是把相似的对象归到同一簇中.簇内 ...

  2. c语言编程算法模板,C语言编程算法精选.doc

    C语言编程算法精选 二级C语言编程算法精选一.数学计算1.编写函数double?fun功能是:根据公式计算s,计算结果通过形参指针sn传回:n通过形参传入.? ? 1? ?? ?1? ?? ? 1? ...

  3. c语言iso校验算法,模式识别c语言ISODATA算法.doc

    模式识别c语言ISODATA算法.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. ...

  4. c语言数据交换的算法流程图,C语言冒泡排序算法浅析

    C语言泡排冒序算浅析 法中刘旭 ( 江师范丽等专高学科校数与计算机学科学系 ) [ 摘]要泡冒排序算法 C语言常见是排序算法之,一该算法的优点 逻辑是清晰,代码简洁,点缺是时复杂度间高较本文介.绍了统 ...

  5. c语言贪心算法ppt,c语言(贪心算法).ppt

    c语言(贪心算法).ppt ACM程序设计,杭州电子科技大学 刘春英 ,2018/12/23,2,最近几天,,你 了吗,AC,2018/12/23,3,每周一星(9),qfwr,2018/12/23, ...

  6. cordic算法反正切c语言,Cordic 算法之 反正切

    在通信的算法中,常采用Cordic算法之一,知道角度产生正交的的正弦余弦, 或者知道正弦和余弦求角度,求反正切. 1. 求正弦和余弦值. 方法:旋转角度,得到正弦余弦值: 再旋转角度,到达下一个正弦余 ...

  7. 字符串匹配KMP算法设计C语言,KMP字符串匹配算法笔记

    网上有很多解释KMP算法的文章,A_B_C_ABC的这篇很详细,反复看了好几遍,总算理解了个大概,但是总觉得没那么爽快.其实,一种算法各人有各人的理解方法,找到适合自己理解的才容易记住.下面是我对这个 ...

  8. c语言kmp算法代码,C语言KMP算法的实现

    KMP算法在模式与主串之间存在许多"部分匹配"的情况下,比BF算法快.(注意,接下来的串都是以下标为1作为起始储存位置.) 下面说一下实现代码: 首先是预定义和类型定义: #def ...

  9. python二分法查找算法_顺序查找算法和折半(二分法)查找算法,C语言查找算法详解...

    查找是指在大量的信息中寻找一个特定的信息.在计算机中,查找是非常重要的一个应用,比如"百度".查找算法的好坏直接影响查找的速度. 常用的查找算法主要有顺序查找和折半(二分法)查找: ...

最新文章

  1. python之模块base64
  2. 【目录】 软件测试全栈需要学习什么? 软件测试的各个阶段 ,软件测试学习路径,软件测试方向选择,软件测试的薪资待遇。...
  3. zabbix 彻底解决图片中文乱码
  4. 创建总账科目类型会计凭证
  5. HtmlAgilityPack/xpath
  6. python实现炫酷二维码
  7. 用于快速排查Java的CPU性能问题(top us值过高)
  8. 1145: 零起点学算法52——数组中删数II
  9. 仿XP系统的任务栏菜单
  10. Eclipse下载安装配置
  11. Excel数据填充技巧
  12. Linux时间同步(Fri Nov 16 12:12:13 Local time zone must be set--see zic manual page 2018)解决办法
  13. 【采集项目-(4)业务数据采集】
  14. Multisim中元器件的翻转方法以及快捷键,最详细,最清晰!!!
  15. 【社区团购平台排名】社区团购平台有哪些?
  16. VUE项目(仿商城)
  17. 【腾讯云】云服务器 Nginx 内网访问 COS 省流量费
  18. Rosalind第10题——ros_bio10_CONS
  19. OceanBase 业务数据库实践(二)── DB2 迁移
  20. 爱码哥移动开发平台的4大开发环境

热门文章

  1. python跨包导入包_python引入跨模块包
  2. DOxygen for C++使用说明——Markdown支持
  3. oracle数据库主键自增序列_Oracle数据库序列详解
  4. win服务器创建文件夹命令,Win10系统如利用命令提示符或WSL创建任意大小空白文件...
  5. 怎么制作铁闸门_“短笛”拿铁,最近的心头好!
  6. ES6学习笔记六(Iterator和for..of)
  7. xshell连接linux出现乱码
  8. mysql 随机选取一条记录
  9. 蓝桥 BEGIN4 - Fibonacci数列
  10. 【洛谷P2023】维护序列