C 資料結構(七字串)

2021-09-26 10:06:57 字數 1516 閱讀 6086

字串的定長順序儲存及基本操作

字串的堆儲存

字串的鏈式儲存

字串的基本概念

字串:由零個或多個字元組成的字串行。記作:s=「s1,s2,s3」。

空串:長度為零叫空串;

空白串:乙個或多個空白格組成的串空白串;

子串:串中任意個連續字元組成的子串行稱為該串的子串;

主串:包含所有子串的串叫主串;

串變數+串常量:變數 + 常量

串比較與串相等  字符集與編碼

字串的基本操作

? 都沒實現 求串長+串賦值+串拼接+求子串+串比較+子串定位+串插入+串刪除+串替換 ?

串資料元素型別為字元型的線性表(儲存結構)。

字串的定長順序儲存

字串串尾儲存乙個不會在串**現的特殊字元作為串的終結符(\0)。

設定定長串儲存空間。用第0號單元存放實際長度,串存放在maxize個單元中,字元的序號和儲存位置一致,應用更方便。

定長順序串的基本操作

?: 串拼接操作+求子串操作+串操作比較

模式匹配

字串的模式匹配:定位子串

蠻力匹配演算法(bf):很好經典基礎

kmp思想:防止主串指標回溯(從頭再來),一條路走到黑,好馬不吃回頭草……

希望在某趟主串元素si和子串tj匹配失敗後,主串指標i不回溯,子串t移動到和主串對應的某個位置上,使得tk對準si繼續向右前行。關鍵是k!主串一直前進(後移),子串利用next函式計算子串指標移動位置k(匍匐前進)。

準備工作:next函式難點(看一遍有點難理解,兩遍ok)計算k

例題:主串:s=「acabaabaabcacaabc」 子串:t=「abcaababc」。

過程示意:

重點:(敲黑板了)next函式(推導過程):

已經匹配的字串主串 s 和子串 t 在進行一次匹配(匹配成功k個元素,使用匹配成功的子串k個元素和主串k個元素在匹配,把前面以匹配的又分割成乙個匹配,有些遞迴思想的那)參考

字串名的儲存映像

串名的儲存映像是串名——串值記憶體分配對照表,也稱為索引表。

//帶串長的索引表

typedef struct lnode;

//帶末尾指標的索引表

typedf structenode;

//帶特徵位置的索引表

堆儲存結構

在記憶體中開闢能儲存足夠多串的、位址連續的儲存空間,作為應用程式中所有串的可利用儲存空間,即堆儲存空間。

中文分詞

遺傳演算法

資料結構3 字串

string的基本操作函式要會,拷貝,查詢 hw筆試第一題,兩個字串,前面是全量字符集,後面是已占用字符集 用 隔開 輸出剩餘的字符集。1 include2 include3 using namespace std 4string stringoperate string str1,string s...

資料結構 5 字串 C語言

define maxsize 40 儲存空間初始分配量 typedef int status status是函式的型別,其值是函式結果狀態 如ok等 typedef int elemtype elemtype型別根據實際情況而定,這裡假設為int typedef char string maxsiz...

資料結構實驗之串二 字串匹配(字串雜湊)

給定兩個字串string1和string2,判斷string2是否為string1的子串。輸入包含多組資料,每組測試資料報含兩行,第一行代表string1,第二行代表string2,string1和string2中保證不出現空格。string1和string2大小不超過100字元 對於每組輸入資料,...