C語言資料結構字串的模式匹配 BF演算法

2021-09-24 09:27:22 字數 971 閱讀 9244

/*

*串的模式匹配-bf演算法

*找到相同的字串輸出在原字串中的位置 代表匹配字串在原字串中的位置

*/

#include#include#include#define strsize 255//字串的最大長度

typedef char *strtype;//字元數字型別

typedef int statu;//函式返回值的資料型別

#define ok 1

#define error 0

typedef struct string

string;//字串的結構體資料型別

void init_string(string* str);//對字串的初始化

statu create_string(string* str);//對字串進行建立

int bf_fun(string *str,char *s,int pos);//字串模式匹配的演算法

void main()

else

printf("請輸入進行模式匹配的字串:\n");

scanf("%s",s);

int pos=bf_fun(str,s,2);

if(pos==error)

else

}void init_string(string *str)//對字串的初始化

else

}statu creat_string(string *str)

}str->data[i]='\0';//字串的結束標誌

return ok;//字串建立成功

}int bf_fun(string *str,char *s,int pos)//字串模式匹配的演算法

else

}if(j==len)

return i+1;

else

return error;

}

資料結構 字串 模式匹配

我們先把模式串標出序號 接著把模式串所有字首依次列出來 接下來把每乙個子串相等的字首和字尾的最大長度求出,舉個例子 abaab 觀察子串,前字尾ab相同,因此返回2 5.依次類推,我們可以得到每乙個子串對應的一組序列 當時這組資料並不是所要求的next陣列,可以將其稱為部分匹配值表,相應c 如下 獲...

資料結構 字串的模式匹配

什麼叫做模式匹配呢?其實就是看字串s中是否有子串t,那麼t就叫匹配串。我們平時查詢方式是逐個匹配,那麼時間複雜度就是o n m 比如s abcabde t abd 那麼比較的時候s 1 t 1 所以接下來比較s 2 和t 2 結果s 2 t 2 那麼接下來就比較s 3 和t 3 這一次比較匹配不上。...

資料結構之字串的模式匹配

字串的模式匹配問題 一共有兩種演算法,1.樸素模式匹配演算法。舉例而言 尋找從s goodgoogle 中找到v google 這個子串 我們一般需要以下的步驟 1 從主串的第乙個字元開始,s與 v中的字元逐一比較,可以發現前三個匹配成功而第四個沒有匹配成功 豎線代表成功,折現代表失敗 2 主串的開...