資料結構 順序串的各種模式匹配演算法

2021-07-10 21:57:05 字數 1102 閱讀 6155

如圖效果:

///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個字元開始與模式串的第乙個字元比較,...