四 資料結構 串

2021-10-24 21:52:49 字數 1564 閱讀 1071

4.0串也成為字串,是一種特殊的線性表,是由零個或多個字串組成的有限序列,一般記為 s = 『a1a2…an』。

4.1兩個串的長度相等並且對應的值相等,那麼這兩個串相等。

4.2空串和空格串的區別

空串: s='' 

空格串: 由乙個或多個空格組成的

4.3串的抽象資料型別

adt string // 元素

資料關係:r1 = // 序偶關係

基本操作:

strassign(&t, chars)

初始條件:chars是字串常量。

操作結果:生乙個其值等於chars的串

strcopy(&t, s)

初始條件:s存在

操作結果 :由串s複製得串t

}adt string

4.4串的實現

(1) 陣列(靜態儲存):利用連續的儲存單元進行儲存,缺點:陣列的長度固定,不易進行擴充套件。如果在某些操作之後,超過陣列的長度(插入,置換,連線等),約定用截尾法處理。

(2)堆分配儲存:也是才用一組連續的儲存單元進行儲存,但是儲存空間是在程式執行過程中動態分配的。

(3) 塊鏈儲存:既然串是一種特殊的線性表,那麼也可以用鏈式儲存方法實現。那麼儲存中節點的大小就是不確定的,儲存元素不夠節點的大小,就採用』#『 填充。

4.5串的模式匹配(子串的定位演算法)

(1)bf演算法

演算法思想:

●將主串的第pos個字元和模式串的第乙個字元比較,

.若相等,繼續逐個比較後續字元;

.若不等,從主串的下一字元起,重新與模式串的第乙個字元比較。

●直到主串的乙個連續子串字串行與模式串相等。返回值

為s中與t匹配的子串行第乙個字元的序號,即匹配成功。

●否則,匹配失敗,返回值0

// **(c語言)

// 從第乙個字元開始查詢

int index_bf(char s, char t)else

}if(j >= t.length - 1)else

}

// 公升級版 從指定位置開始查詢	

int index_bf(char s, char t, int pos)else

} if(j >= t.length - 1)else

}時間複雜度:

假設主串長度為n,子串長度為m,

最好的情況下匹配了 m次

最壞的情況為 (n-m)*m+m

主串前面n-m個位置都部分匹配到子串的最後一-位,即這n-m位各比較了m次,最後m位也各比較了1次

所以 演算法複雜度為 o(n*m)

(2)kmp演算法

bf演算法所耗時間較長。kmp演算法在bf演算法上進行了改進,主串的指標不必回溯以及子串的指標不必回到第乙個元素,演算法複雜度可提速到o(m+n)

資料結構(四) 串

串 string 是由零個或多個字元構成的有限序列,又叫字串 空格串 只包含空格的串 空串 零個字元的串 串的大小比較 對於數字來說,1與2 誰大誰小不用討論,但是 兩個字串怎麼比較大小呢?計算機的常用字元是使用標準的ascii編碼。所以我們字串的比較就是逐個的比較ascii值的大小 串的一些操作函...

漫談資料結構 四 串

串又稱字串,是比較常見的乙個資料結構,它由0或多個字元構成,一般定義為s abcdegf 字元的個數稱為串的長度。長度為0的串為空串,記為s 由空格組成的串為空格串,空格也是字元,記為s 目前,隨著科學技術的發展,非數值處理的情況越來越多,學好字串的處理變得尤為重要,本文將介紹字串處理的幾個基本方法...

資料結構實驗四 串

一 實驗目的 通過訓練,加深理解並把握串的基本運算的特點。二 實驗內容 問題描述 本題目中的串編輯要求對串實現以下兩種功能 本題目中的串編輯要求對串實現以下兩種功能 插入 把乙個字串插入到給定串的指定位置 刪除 將串中某指定位置開始的若干字元從串中刪除 參考程式 include include in...