如圖效果:
///kmp演算法中求t串的next值
void getnext(sqstring t,int next)
///改進後kmp演算法中求t串的next值
void getnextval(sqstring t,int next)
int main()
{ int j;
sqstring s,t;
strassign(s,"abcabcdabcdeabcdefabcdefg");
strassign(t,"abcdeabcdefab");
printf("串s:");
dispstr(s);
printf("\n");
printf("串t:");
dispstr(t);
printf("\n");
printf("t串在s串中的位置=%d\n",bfindex(s,t));
getnext(t,next);///求next值
getnextval(t,nextval);///求nextval值
printf("j ");
for(j=0;j哈哈,好高興,終於理解了kmp
bf可以直接返回模式串在主串中的位置,簡單易懂但是效率太低
kmp先求t串的next值,然後通過kmpindex()呼叫getnext()函式返回匹配位置
改進後的kmp與kmp只是next取值時有所不同,也是通過kmpindex1()呼叫getnextval()返回匹配位置
資料結構實現順序串的各種模式匹配演算法
建立目標串s abcabcdabcdeabcdeabcdefabcdefg 和模式串 t abcdeabcdefab 採用簡單匹配演算法求t在s中的位置 由模式串t求出next陣列值和nextval陣列值 採用kmp演算法求t在s中的位置 採用改進的kmp演算法t在s中的位置 我的資料結構githu...
實現順序串的各種模式匹配演算法
實驗題目 實現順序串的各種模式匹配演算法 實驗內容 實現順序串的各種模式匹配運算 1 建立目標串s abcabcdabcdeabcdefabcdefg 和模式串t abcdeabcdefab 2 採用簡單匹配演算法求t在s中的位置 3 由模式串t求出next值和nextval值 4 採用kmp演算法...
資料結構2 2串的模式匹配
子串在主串中的定位操作稱為串的模式匹配,記為index s,t,pos 即在主串s中,從第pos個字元開始查詢與子串t第一次相等的位置。若查詢成功,則返回子串t的第乙個字元在主串中的位序,否則返回0。其中主串稱為目標串,子串稱為模式串。基本思想 從目標串的第pos個字元開始與模式串的第乙個字元比較,...