字串的定長順序儲存及基本操作
字串的堆儲存
字串的鏈式儲存
字串的基本概念
字串:由零個或多個字元組成的字串行。記作: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字元 對於每組輸入資料,...