串的模式匹配
串的模式匹配一般分为两种:简单模式匹配和KMP算法 #include <stdio.h> #include <stdlib.h> #define MaxSize 100 typedef struct{ char str[MaxSize+1]; int length; }Str;//串的存储结构 int index1(Str *str1,Str *str2){ int i=1,j=1; int pos=i;//记录当前主串开始匹配的起始位置 while(i<=str1->length&&j<=str2->length){ if(str1->str[i]==str2->str[j]){ i++; j++; } else{ j=1; i=++pos;//若匹配失败,则将起始位置的下一个位置开始 } } if(j>str2->length){ printf("模式串在主串中的位置:%d\n",pos); return pos; } else return 0; }//简单模式匹配 int GetLength(Str *str1){ int i=0; while(str1->str[i+1]){ i++; } return i; }//获得串的长度 void get_next(Str *str2,int next[]){ int i=1,j=0; next[1]=0; while(i