第四章 字串和多維陣列
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...