串的模式匹配
子串在主串中的位置:子串的第乙個字元在主串中的位置
串相等:兩個串的長度相等且對應位置的字元都相等
空格串與空串:
//初始化串並賦值(塊鏈儲存,尾插法)
void
setassign
(lstring *s,
char str)
s->curlen++
; i++;}
}
//實現串的複製
void
strcopy
(lstring *t, lstring s)
}}
//判空
bool strempty
(lstring s)
return false;
}
//串比較
intstrcompare
(lstring t, lstring s)
i++;if
(i ==4)
}return t.curlen-s.curlen;
//若字元相等,長的一方大
}
//求串長
intstrlength
(lstring s)
int len =0;
//用於記錄串長
len = chunksize*
(s.curlen-1)
;//尾結點前的元素數量直接計算得出
for(
int i =
0; ireturn len;
}
截斷:串的實際長度可以在預定義的範圍內(maxlen)隨意設定,超過預定義長度的串值會被捨去
可以採用動態分配的方式解決串值序列截斷的問題
定義:
#define maxlen 255
//預定義最大長度為255
typedef
struct
sstring;
#define chunksize 4
//定義結點塊的大小
typedef
struct chunk chunk;
typedef
struct
lstring;
缺點:主串指標會出現回溯現象導致時間開銷增加
時間複雜度:m與n分別代表主串與模式串的長度
資料結構筆記 第四章
模式匹配 bf演算法 從主串s的第0個字元開始和模式t 的第0個字元進行比較,若相等,則繼續比較兩者的後續字元 否則,從主串s的第1個字元開始和模式t 的第0個字元進行比較,重複上述過程,直到t 中的字元全部比較完畢,則說明本趟匹配成功 或s中字元全部比較完,則說明匹配失敗。模式匹配 kmp演算法 ...
資料結構 第四章
第四章 字串和多維陣列 4.1 字串 4.1.1 字串的定義 1.字串的定義 字串是零個或多個組成的有限序列,只包含空格的串成為空格串。串中所包含的字元個數成為串的長度,長度為0的串為空串,記作 乙個非空串通常該記作 s s1,s2 sn 字串中任意個連續的字元組成的子串行稱為該串的子串,相應地,包...
資料結構 第四章
第四章 字串和多維陣列 4.1 字串 4.1.1 字串的定義 1.字串的定義 字串是零個或多個組成的有限序列,只包含空格的串成為空格串。串中所包含的字元個數成為串的長度,長度為0的串為空串,記作 乙個非空串通常該記作 s s1,s2 sn 字串中任意個連續的字元組成的子串行稱為該串的子串,相應地,包...