数据结构之串的KMP模式匹配算法的实现
来源:互联网 发布:淘宝嘉年华免邮 编辑:程序博客网 时间:2024/05/16 15:18
/*************************串--KMP模式匹配算法*************************/#include"stdio.h"#include"string.h"#include"stdlib.h"#define ERROR 0#define OK 1#define MAXSIZE 255typedef int Status;typedef char String[MAXSIZE+1];//0号位置用来存储串的长度/**************************Operator**************************/StatusStrAssign(String T,char *chars)//生成一个其值等于字符串常量chars的串T{int i;if(strlen(chars)>MAXSIZE)return ERROR;T[0]=strlen(chars);for(i=1;i<=T[0];i++)T[i]=*(chars+i-1);return OK;}int StrLength(String S)//返回串的长度{return S[0];}Status SubString(String Sub,String S,int pos,int len)//用Sub返回串S的第pos个字符之后长度为len的子串{int i;if(pos<1||pos>S[0]||len<0||len>(S[0]-pos+1))return ERROR;for(i=1;i<=len;i++)Sub[i]=S[pos+1];Sub[0]=len;return OK;}void PrintString(String S)//输出串{int i;for(i=1;i<=S[0];i++)printf("%c",S[i]);printf("\n");}void Get_Nextval(String T,int *nextval)//求模式串T的next函数值并存入结果于数组nextval中{int i,j;i=1;j=0;nextval[1]=0;while(i<T[0]){if(j==0||T[i]==T[j]){i++;j++;if(T[i]!=T[j])nextval[i]=j;elsenextval[i]=nextval[j];}elsej=nextval[j];}}int Index_KMP(String S,String T,int pos)//返回子串T在主串S中第pos个字符之后的位置,若不存在,则返回0{int i,j,nextval[MAXSIZE];if(pos<1||pos>S[0]||T[0]>S[0])return 0;i=pos;j=1;Get_Nextval(T,nextval);while(i<=S[0]&&j<=T[0]){if(j==0||S[i]==T[j]){i++;j++;}else j=nextval[j];}if(j>T[0])return i-T[0];elsereturn 0;}main(void){int i;char *str1={"nihaoadnihaoni"};char *str2={"aoadni"};String S,T;StrAssign(S,str1);printf("%d\n",StrLength(S));PrintString(S);StrAssign(T,str2);printf("%d\n",StrLength(T));PrintString(T);i=Index_KMP(S,T,4);printf("%d\n",i);i=Index_KMP(S,T,5);printf("%d\n",i);}
0 0
- 数据结构之串的KMP模式匹配算法的实现
- 数据结构之串的模式匹配算法(KMP)
- 【数据结构】 串的模式匹配算法KMP
- 数据结构之模式匹配KMP算法的next数组求解
- 数据结构- 串的模式匹配算法:BF和 KMP算法
- 数据结构- 串的模式匹配算法:BF和 KMP算法
- 数据结构 字串的模式匹配 KMP算法
- 数据结构(11)--串的模式匹配算法之BF、KMP算法
- 算法:KMP算法实现的模式匹配
- 数据结构——串(朴素的模式匹配算法、KMP模式匹配算法)
- 字符串模式匹配的KMP算法实现
- 串的模式匹配算法之KMP算法[部分转载]
- 数据结构 字符串模式匹配之KMP算法
- 数据结构Java实现——③串--->串的模式匹配:Brute-Force算法和 KMP算法
- 串的模式匹配算法之KMP与BF
- 数据结构第四次上机 第四章之BF和KMP算法(顺序串的各种模式匹配算法)
- 大话数据结构十一:字符串的模式匹配(KMP算法)
- 大话数据结构十一:字符串的模式匹配(KMP算法)
- ACCESS_ONCE()
- Hessian矩阵用于结构光细化
- 手机远程控制原理
- 编程算法基础-3.1自顶向下风格
- javascript基础学习-dom模型(七)
- 数据结构之串的KMP模式匹配算法的实现
- 定时器TimerTask入门Demo
- GCC技术参考重点解析
- Kivy A to Z -- 通过绑定进程运行CPU提高Python程序在多核CPU平台上的性能
- poj 2912 Rochambeau(带权并查集 + 暴力)
- UVa 10066 - The Twin Towers
- Java学习之路_0002语言基础
- 浙大计算机研究生复试上机考试-2005年-A+B
- VC++6.0 OpenGL环境搭建