4.1字串
4.1.1 字串的定義
1.定義
字串是零個或多個字元組成的有限序列,只包含空格的串稱為空格串。串中所包含的字元個數稱為串的長度,長度為零的串稱為空串,記作「 」。
p非空串通常記為:
s="s1s2 …… sn "
其中:s是串名,雙引號是定界符,雙引號引起來的部分是串值 ,si(1≤i≤n)是乙個任意字元。
4.1.3 模式匹配
給定主串s="s1s2…sn"和模式t="t1t2…tm",在s中尋找t 的過程稱為模式匹配。如果匹配成功,返回t 在s中的位置;如果匹配失敗,返回0。
1.bf演算法
(1)在串s和串
t中設比較的起始下標i和
j;
(2)迴圈直到s或
t的所有字元均比較完
i.如果s[
i]=t[j],
繼續比較s和
t的下乙個字元;
ii.否則,將i和j
回溯,準備下一趟比較;
(3)如果
t中所有字元均比較完,則匹配成功,返回匹配的起始比較下標;否則,匹配失敗,返回0;
程式如下:
intbf(
char s[ ], char t[ ]
)
else
}
if (
t[j]=='\0'
)return(i
-j+1
);
else return 0;
}
2.kmp演算法
基本思想:主串不進行回溯。
(1)在串s和串t中分別設比較的起始下標i和j;
(2)迴圈直到s或t的所有字元均比較完
i.如果s[i]=t[j],繼續比較s和t的下乙個字元;否則
ii.將j向右滑動到next[j]位置,即j=next[j];
iii.如果j=-1,則將i和j分別加1,準備下一趟比較;
(3)如果t中所有字元均比較完畢,則返回匹配的起始下標;否則返回0;
4.2 多維陣列
4.2.1 陣列的定義
陣列是由一組型別相同的資料元素構成的有序集合,每個資料元素稱為乙個陣列元素(簡稱為元素),每個元素受n(n≥1)個線性關係的約束,每個元素在n個線性關係中的序號i1、i2、…、in稱為該元素的下標,並稱該陣列為 n
維陣列。
陣列的特點:
1.元素本身可以具有某種結構,屬於同一資料型別;
2.陣列是乙個具有固定格式和數量的資料集合。
陣列的基本操作:
⑴ 訪問:給定一組下標,讀出對應的陣列元素;
⑵ 修改:給定一組下標,儲存或修改與其相對應的陣列元素。
訪問和修改操作本質上只對應一種操作——定址
4.2.2 陣列的儲存結構與定址----二維陣列
常用的對映方法有兩種:
(1)按行優先:先行後列,先儲存行號較小的元素,行號相同者先儲存列號較小的元素。
(2)按列優先:先列後行,先儲存列號較小的元素,列號相同者先儲存行號較小的元素。
4.3 矩陣的壓縮儲存
特殊矩陣:矩陣中很多值相同的元素並且它們的分布有一定的規律。
稀疏矩陣:矩陣中有很多零元素。
壓縮儲存的基本思想是:
⑴ 為多個值相同的元素只分配乙個儲存空間;
⑵對零元素不分配儲存空間。
4.3.1 對稱矩陣的壓縮儲存
對稱矩陣特點:aij=aji。
對於下三角中的元素aij(i≥j),在陣列sa中的下標k與i、j的關係為:k=i×(i-1)/2+j -1。
上三角中的元素aij(i<j),因為aij=aji,則訪問和它對應的元素aji即可,即:k=j×(j-1)/2+i-1。
4.3.2 三角矩陣的壓縮儲存
只儲存上三角(或下三角)部分的元素。
矩陣中任一元素aij在陣列中的下標k與i、j的對應關係:
對於上三角矩陣,可以按行儲存上三角部分,最後儲存對角線下方的常數;下三角矩陣則相似,要儲存下三角中的元素和對角線上方的常數。
4.3.3 對角矩陣的壓縮儲存
對角矩陣:所有非零元素都集中在以主對角線為中心的帶狀區域中,除了主對角線和它的上下方若干條對角線的元素外,所有其他元素都為零。
元素aij在一維陣列中的序號
=2 + 3(i-2)+(j-i+ 2)
=2i+ j -2
∵一維陣列下標從0開始
∴元素aij在一維陣列中的下標
=2i+ j -3。
4.3.4 稀疏矩陣的壓縮儲存
1.三元組順序表
將稀疏矩陣中的每個非零元素表示為:
(行號,列號,非零元素值)——三元組。
定義三元組:
template datatype
>
struct
element;
三元組表
:將稀疏矩陣的非零元素對應的三元組所構成的集合,
按行優先的順序排列成乙個線性表。
三元組順序表儲存結構定義:
const int
maxterm
=100;
template datatype
>
struct
sparsematrix
;
2.十字鍊錶
row:儲存非零元素的行號
col:儲存非零元素的列號
item:儲存非零元素的值
right:指標域,指向同一行中的下乙個三元組
down:指標域,指向同一列中的下乙個三元組
資料結構 第四章 字串和多維陣列
第四章 字串和多維陣列 4.1 字串 4.1.1 字串的定義 1.字串的定義 字串是零個或多個組成的有限序列,只包含空格的串成為空格串。串中所包含的字元個數成為串的長度,長度為0的串為空串,記作 乙個非空串通常該記作 s s1,s2 sn 字串中任意個連續的字元組成的子串行稱為該串的子串,相應地,包...
資料結構第四章字串和多維陣列
1.字串的定義 字串是零個或多個字元組成的有限序列,只包含空格的稱為空格串。串中所包含的字元個數稱為串的長度,長度為零的串稱為空串。字串中任意個連續的字元組成的子串行稱為該串的子串,包含子串的串稱為主串。子串的第乙個字元在主串中的序號稱為子串在主串中的位置。2.字串的比較 給定兩個字串 x x1x2...
《資料結構》第四章 字串和多維陣列 實驗
資料結構 實驗四 字串和多維陣列 實驗 一 實驗目的 鞏固字串和多維陣列相關知識,學會運用靈活應用。1.回顧字串和多維陣列的邏輯結構和儲存操作特點,字元和陣列的物理儲存結構和常見操作。2.學習運用字串和和陣列的知識來解決實際問題。3.進一步鞏固程式除錯方法。4.進一步鞏固模板程式設計。二 實驗時間 ...