一、數(shù)據(jù)結(jié)構(gòu)里面pnext與next的區(qū)別
p 是一個(gè)指向某類型結(jié)構(gòu)的指針;
p->next 是 p 所指向的結(jié)構(gòu)的 next 成員;
p = p->next 是把?p->next 的值賦給 p。
如果這兩句語(yǔ)句中的 p 變量是同一個(gè) p 的話,那么?p->next 的數(shù)據(jù)類型一定是一個(gè)指向結(jié)構(gòu)的指針,而且所指向的結(jié)構(gòu)的類型與?p->next 所在結(jié)構(gòu)的類型相同。
#include |
延伸閱讀:
二、KMP算法
相比BF算法的改進(jìn):每當(dāng)一趟匹配過程中出現(xiàn)字符比較不等時(shí),無(wú)需回溯i指針(即無(wú)需將i指針完全退回至i-j+1),而是利用已經(jīng)得到的“部分匹配”的結(jié)果將模式向右“滑動(dòng)”盡可能遠(yuǎn)的一段距離后,繼續(xù)進(jìn)行比較。
需要解決的問題:當(dāng)主串中的第i個(gè)字符與模式中第j個(gè)字符比較不相等時(shí),主串中第i個(gè)字符(i指針不回溯)應(yīng)與模式中哪個(gè)字符再比較?—-假設(shè)從主串中第i個(gè)字符與模式中的第k個(gè)字符再進(jìn)行比較
它是則呢樣來消除回溯的呢?就是因?yàn)樗崛〔⑦\(yùn)用了加速匹配的信息!
這種信息就是對(duì)于每模式串 t 的每個(gè)元素 t j,都存在一個(gè)實(shí)數(shù) k ,使得模式串 t 開頭的 k 個(gè)字符(t 0 t 1…t k-1)依次與 t j 前面的 k(t j-k t j-k+1…t j-1,這里名列前茅個(gè)字符 t j-k 非常多從 t 1 開始,所以 k < j)個(gè)字符相同。如果這樣的 k 有多個(gè),則取最大的一個(gè)。模式串 t 中每個(gè)位置 j 的字符都有這種信息,采用 next 數(shù)組表示,即 next[ j ]=MAX{ k }。