/*
*串的模式匹配-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 主串的開...