課本源碼部分
第4章 串 - KMP匹配算法
——《數據結構》-嚴蔚敏.吳偉民版
源碼使用說明 鏈接☛☛☛ 《數據結構-C語言版》(嚴蔚敏,吳偉民版)課本源碼+習題集解析使用說明
課本源碼合輯 鏈接☛☛☛ 《數據結構》課本源碼合輯
習題集全解析 鏈接☛☛☛ 《數據結構題集》習題解析合輯
本源碼引入的文件 鏈接☛ SequenceString.c
文檔中源碼及測試數據存放目錄:數據結構\▲課本算法實現\▲04 串\04 KMP
概述
KMP匹配算法是普通匹配算法的改進,它提高了串匹配過程中的效率。
解析
KMP匹配算法的重點在於利用模式串自身的重復部分,在匹配中消除那些重復的匹配過程。如下圖,當模式串匹配與主串在Si和Pj處失配時,此時如果模式串的兩個黃色區域重復,那么只需將模式串右移一定位置,讓主串的黃色區域與模式串的第一個黃色區域做比較即可。也就是說,Pj處失配后,只需讓主串的Si與Pk繼續比較,而不必退回到P1處。KMP算法就是用來計算模式串某個字符處失配后,應該退回的下一個用來比較的字符位置。
匹配算法如下圖:
源碼
文件一 ☛ KMP.h
文件二 ☛ KMP.c
文件三 ☛ KMP-main.c (測試文檔)
測試結果展示