資料結構 第四章

2021-06-26 15:50:16 字數 1129 閱讀 8812

第四章 字串和多維陣列

4.1 字串

4.1.1 字串的定義

1.字串的定義

字串是零個或多個組成的有限序列,只包含空格的串成為空格串。串中所包含的字元個數成為串的長度,長度為0的串為空串,記作「」,乙個非空串通常該記作: s=「s1,s2…sn」

字串中任意個連續的字元組成的子串行稱為該串的子串,相應地,包含子串的串稱為主串,子串的第乙個字元在主串的序號成為子串在主串的位置。

2.字串的比較

當下列條件之一成立時,稱x>y。

(1)n1

1,(i=1,2…,n);

(2)存在某個k≤min(m,n),使得xi=yi,(i=1,2,…,k-1),xk

k。4.1.3 模式匹配

給定兩個字元s=「s1,s2…sn」和t=「t1,t2…tn」,在主串s中尋找子串t的過程稱為模式匹配,t成為模式。如何匹配成功,返回t在s中的位置;如果匹配失敗,返回0.

1.     樸素的模式匹配演算法

樸素的模式匹配演算法bf

intbf(char s,char t)

else

}if(t[j]=='\0')return (i-j+1);

else return 0;

}2.     改進的模式匹配演算法

bf演算法簡單但效率較低,一種對bf演算法做了很大改進的模式匹配演算法是kmp演算法,其基本思想是主串不進行回溯。

由t[0]~t[k-1]=s[i-k]~s[i-1]和t[j-k]~t[j-1]=s[i-k]~s[i-1]。

可得: t[0]~t[k-1]=t[j-k]~t[j-1]

用next[j]表示t[j]對應的k值(0≤j-1  j=0

next[j]=    max ;

2.       十字鍊錶

稀疏矩陣的鏈結儲存結構稱為十字鍊錶。它具備儲存結構的特點,因此,在非零元素的個數及位置都會發生變化的情況下,通常採用十字鍊錶儲存稀疏矩陣。

其中,element為資料域,儲存非零元素對應的三元組;

right為指標域,指向同一行中的下乙個三元組;

down為指標域,指向同一列中的下乙個三元組。

4.4 應用舉例

1. 字串的應用舉例——凱撒密碼

2. 陣列的應用舉例——幻方

資料結構 第四章

第四章 字串和多維陣列 4.1 字串 4.1.1 字串的定義 1.字串的定義 字串是零個或多個組成的有限序列,只包含空格的串成為空格串。串中所包含的字元個數成為串的長度,長度為0的串為空串,記作 乙個非空串通常該記作 s s1,s2 sn 字串中任意個連續的字元組成的子串行稱為該串的子串,相應地,包...

資料結構第四章

第四章字串和多維陣列 4.1 字串 4.1.1 字串的定義 1.字串的定義 字串是零個或多個組成的有限序列,只包含空格的串成為空格串。串中所包含的字元個數成為串的長度,長度為 0的串為空串,記作 乙個非空串通常該記作 s s1,s2 sn 字串中任意個連續的字元組成的子串行稱為該串的子串,相應地,包...

資料結構第四章

字串 零個或多個字元組成的有限序列。字串中任意個連續字元組成的子串行稱為該串的子串。子串第乙個字元在主串中的序號稱為子串在主串中的位置。給定兩個字串s和t,在主串s中尋找子串t的過程稱為模式匹配。t稱為模式。bf演算法 int bf char s char t else if t j 0 retur...