第
4 章
字串和多維陣列
本章的基本內容是:
字串。在程式語言中大都有串變數的概念,而且實現了基本的串操作,本章重點討論串的儲存結構及模式匹配演算法。
陣列。在程式語言中大都提供了陣列作為構造資料型別,本章重點討論陣列以及特殊矩陣的儲存與定址。
4.1
字串
主要內容
4.11 字串的定義
4.12 字串的儲存結構
4.13 模式匹配
線性表——
具有相同型別的資料元素的有限序列。 棧
——僅在表的一端進行插入和刪除操作。
佇列——
在一端進行插入操作,而另一端進行刪除操作。 串
——零個或多個字元組成的有限序列。
線性表——具有相同型別的資料元素的有限序列。
(多維)陣列
——線性表中的資料元素可以是線性表。
串的邏輯結構:
p串:零個或多個字元組成的有限序列。
p串長度:串中所包含的字元個數。
p空串:長度為0的串,記為:" "。
p非空串通常記為:
s=" s1 s2 …… sn "
其中:s是串名,雙引號是定界符,雙引號引起來的部分是串值 ,
si(1≤i≤n)是乙個任意字元。
p 子串:串中任意個連續的字元組成的子串行。
p 主串:包含子串的串。
p 子串的位置:子串的第乙個字元在主串中的序號。
s1="
ab12
cd " s
2="ab
12" s
3="ab
13"
s4="
ab12φ"
s5=" " s
6="φφφ
"
p串的資料物件約束為某個字符集。
p 微機上常用的字符集是標準ascii碼,由 7 位二進位制數表示乙個字元,總共可以表示 128 個字元。
p 擴充套件ascii碼由 8 位二進位制數表示乙個字元,總共可以表示 256 個字元,足夠表示英語和一些特殊符號,但無法滿足國際需要。
unicode由 16 位二進位制數表示乙個字元,總共可以表示 216個字元,能夠表示世界上所有語言的所有字元,包括亞洲國家的表意字元。為了保持相容性,unicode字符集中的前256個字元與擴充套件ascii碼完全相同。
串的比較:通過組成串的字元之間的比較來進行的。
給定兩個串:x="
x1x2
…xn"
和y="y
1y2…
ym",則:
1. 當n
=m且x
1=y1
,…,x
n=ym
時,稱x=y
; 2. 當下列條件之一成立時,稱x<
y: ⑴
n<m且
xi=y
i(1≤ i≤
n); ⑵
存在k≤min(m
,n),使得xi
=yi(
1≤i≤k
-1)且
xk<y
k。
模式匹配:給定主串s="s1s2…sn"和模式t="t1t2…tm",在s中尋找t 的過程稱為模式匹配。如果匹配成功,返回t 在s中的位置;如果匹配失敗,返回0。
模式匹配問題有什麼特點
?⑴演算法的一次執行時間不容忽視:問題規模通常很大,常常需要在大量資訊中進行匹配;
⑵演算法改進所取得的積累效益不容忽視:模式匹配操作經常被呼叫,執行頻率高。
模式匹配
——bf
(back-forward?)
演算法
1. 在串s和串
t中設比較的起始下標i和
j;2. 迴圈直到s或
t的所有字元均比較完
2.1 如果s[i
]=t[j],
繼續比較s和
t的下乙個字元;
2.2 否則,將i和
j回溯,準備下一趟比較;
3. 如果
t中所有字元均比較完,則匹配成功,返回匹配的起始比較下標;
否則,匹配失敗,返回0;
int bf(char s[ ], char t[ ])
else }
if (t[j]=='\0') return (i-j+1);
else return 0; }
int bf(char s[ ], char t[ ])
else }
if (t[j]=='\0') return start;
else return 0; }
kmp演算法的偽**描述
1. 在串s
和串t中分別設比較的起始下標i和
j;2.
迴圈直到s或
t的所有字元均比較完
2.1 如果s[i
]=t[j],
繼續比較s和
t的下乙個字元;否則
2.2 將
j向右滑動到
next[j]
位置,即
j=next[j];
2.3
如果j=-1,則將i
和j分別加1,準備下一趟比較;
3. 如果
t中所有字元均比較完畢,則返回匹配的起始下標;否則返回0;
4.2
多維陣列
主要內容
4.21 陣列的定義
4.22 陣列的儲存結構與定址
陣列是由一組型別相同的資料元素構成的有序集合,每個資料元素稱為乙個陣列元素(簡稱為元素),每個元素受n(n≥1)個線性關係的約束,每個元素在n個線性關係中的序號i1、i2、…、in稱為該元素的下標,並稱該陣列為 n 維陣列。
陣列的特點
元素本身可以具有某種結構,屬於同一資料型別;
陣列是乙個具有固定格式和數量的資料集合。
陣列的基本操作
⑴ 訪問:給定一組下標,讀出對應的陣列元素;
⑵ 修改:給定一組下標,儲存或修改與其相對應的陣列元素。
訪問和修改操作本質上只對應一種操作——
定址4.3
矩陣的壓縮儲存
主要內容
4.31 對稱矩陣的壓縮儲存
4.32 三角矩陣的壓縮儲存
4.33 對稱矩陣的壓縮儲存
4.34 稀疏矩陣的壓縮儲存
特殊矩陣和稀疏矩陣
p特殊矩陣:矩陣中很多值相同的元素並且它們的分布有一定的規律。
p稀疏矩陣:矩陣中有很多零元素。
p壓縮儲存的基本思想是:
⑴ 為多個值相同的元素只分配乙個儲存空間;
⑵ 對零元素不分配儲存空間。
本章總結
資料結構 字串和多維陣列
本章節主要內容 字串儲存 模式匹配 陣列的邏輯結構特徵 陣列的儲存方式及定址方法 特殊矩陣和稀疏矩陣的壓縮儲存方法 一 字串 1 串 零個或多個字元組成的有限序列。串長度 串中所包含的字元個數。空串 長度為0的串,記為 非空串表示 s s1,s2 sn s為串名,為定界符,其中為串值,si為任意字元...
資料結構 字串和多維陣列
本章節主要內容 字串儲存 模式匹配 陣列的邏輯結構特徵 陣列的儲存方式及定址方法 特殊矩陣和稀疏矩陣的壓縮儲存方法 一 字串 1 串 零個或多個字元組成的有限序列。串長度 串中所包含的字元個數。空串 長度為0的串,記為 非空串表示 s s1,s2 sn s為串名,為定界符,其中為串值,si為任意字元...
字串和多維陣列
一 字串 1 字串的定義 是零個或多個字串組成的有限序列,只包含空格的串稱為空格串。2 字串中任意個連續的字元組成的子串行稱為該穿的子串,包含子串的串稱為主串,子串的第乙個字元咋主串中的序號稱為子串在主串中的位置。3 模式匹配 給定兩個字串s和t,在主串s中尋找子串t的過程稱為模式匹配,t為模式。如...