数据结构课上笔记8
串的概念:串(字符串):是由 0 個(gè)或多個(gè)字符組成的有限序列。 通常記為:s =‘ a1 a2 a3 … ai …an ?’ ( n≥0 )。
串的邏輯結(jié)構(gòu)和線性表極為相似。
?
一些串的類型:
?
空串:不含任何字符的串,長(zhǎng)度 = 0。
空格串:僅由一個(gè)或多個(gè)空格組成的串。
子串:由串中任意個(gè)連續(xù)的字符組成的子序列。
主串:包含子串的串。
位置:字符在序列中的序號(hào)。
子串在主串中的位置:子串的首字符在主串中的位置。
?
空串是任意串的子串,任意串是其自身的子串。
串相等的條件:當(dāng)兩個(gè)串的長(zhǎng)度相等且各個(gè)對(duì)應(yīng)位置的字符都相等時(shí)才相等。
?
實(shí)現(xiàn):
?
因?yàn)榇翘厥獾木€性表,故其存儲(chǔ)結(jié)構(gòu)與線性表的 存儲(chǔ)結(jié)構(gòu)類似,只不過(guò)組成串的結(jié)點(diǎn)是單個(gè)字符。
?
定長(zhǎng)順序存儲(chǔ)表示
也稱為靜態(tài)存儲(chǔ)分配的順序串。 即用一組地址連續(xù)的存儲(chǔ)單元依次存放串中的字符序列。
?
串長(zhǎng):可能首字符記錄(顯式)或\0結(jié)尾(隱式)
?
定長(zhǎng)順序存儲(chǔ)表示時(shí)串操作的缺點(diǎn) :串的某些操作受限(截尾),如串的聯(lián)接、插入、置換
?
堆分配存儲(chǔ)表示 ?
?
存儲(chǔ)空間在程序執(zhí)行過(guò)程中動(dòng)態(tài)分配,malloc() 分配一塊實(shí)際串長(zhǎng)所需要的存儲(chǔ)空間(“堆”)
堆存儲(chǔ)結(jié)構(gòu)的優(yōu)點(diǎn):堆存儲(chǔ)結(jié)構(gòu)既有順序存儲(chǔ) 結(jié)構(gòu)的特點(diǎn),處理(隨機(jī)取子串)方便,操作中對(duì) 串長(zhǎng)又沒(méi)有任何限制,更顯靈活,因此在串處理的 應(yīng)用程序中常被采用。
?
串的塊鏈存儲(chǔ)表示
為了提高空間利用率,可使每個(gè)結(jié)點(diǎn)存放多個(gè)字符 (這是順序串和鏈串的綜合 (折衷) ),稱為塊鏈結(jié)構(gòu)。
?優(yōu)點(diǎn):便于插入和刪除 ? ?缺點(diǎn):空間利用率低?
?
?
?
?
總結(jié)
- 上一篇: 数据库2.1.1mysql的特点
- 下一篇: leetcode179. 最大数