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;
}
4.2 多維陣列
陣列的定義
陣列是由一組型別相同的資料元素構成的有序集合,每個資料元素稱為乙個陣列元素(簡稱為元素),每個元素受n(n
≥1)個線性關係的約束,每個元素在n
個線性關係中的序號i1、i2、…、in
稱為該元素的下標,並稱該陣列為n
維陣列。
陣列的特點
元素本身可以具有某種結構,屬於同一資料型別;
陣列是乙個具有固定格式和數量的資料集合
陣列的基本操作
⑴訪問:給定一組下標,讀出對應的陣列元素;
⑵修改:給定一組下標,儲存或修改與其相對應的陣列元素。
訪問和修改操作本質上只對應一種操作——定址
陣列的儲存結構與定址——二維陣列
常用的對映方法有兩種:
按行優先:先行後列,先儲存行號較小的元素,行號相同者先儲存列號較小的元素。
按列優先:先列後行,先儲存列號較小的元素,列號相同者先儲存行號較小的元素。
4.3 矩陣的壓縮儲存
特殊矩陣和稀疏矩陣
特殊矩陣:矩陣中很多值相同的元素並且它們的分布有一定的規律。
稀疏矩陣:矩陣中有很多零元素。
壓縮儲存的基本思想是:
⑴為多個值相同的元素只分配乙個儲存空間;
⑵對零元素不分配儲存空間
特殊矩陣的壓縮儲存——三角矩陣
下三角矩陣的壓縮儲存
儲存:下三角元素
對角線上方的常數——只存乙個
上三角矩陣的壓縮儲存
儲存:上三角元素
對角線上方的常數——只存乙個
特殊矩陣的壓縮儲存——對角矩陣
對角矩陣:所有非零元素都集中在以主對角線為中心的帶狀區域中,除了主對角線和它的上下方若干條對角線的元素外,所有其他元素都為零
稀疏矩陣的壓縮儲存
將稀疏矩陣中的每個非零元素表示為:
(行號,列號,非零元素值)——三元組
template
struct element
;
稀疏矩陣的壓縮儲存——三元組順序表
三元組表:將稀疏矩陣的非零元素對應的三元組所構成的集合,按行優先的順序排列成乙個線性表。
稀疏矩陣的壓縮儲存——十字鍊錶
採用鏈結儲存結構儲存三元組表,每個非零元素對應的三元組儲存為乙個鍊錶結點
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:指標域,指向同一列中的下乙個三元組
資料結構第四章 字串與多維陣列
判斷題 1 1假設模式串是abababaab,則kmp模式匹配演算法中的next j 0 1 1 2 3 4 5 6 2。t 選擇題 2 1kmp演算法下,長為n的字串匹配長度為m的字串的時間複雜度為 2分 a.o n b.o m n c.o m logn d.o n logm 作者陳英 單位南昌航...
第四章 字串與陣列
字串 定義 var list welcome to the westworld 字串長度 list.length 獲得指定位置的字元 list.charat n n是角標 獲取字串首次出現位置 list.indexof n 根據位置提取一段子串 list.slice num1,num2 字串分割成陣...
資料結構 第四章 字串和多維陣列
第四章 字串和多維陣列 4.1 字串 4.1.1 字串的定義 1.字串的定義 字串是零個或多個組成的有限序列,只包含空格的串成為空格串。串中所包含的字元個數成為串的長度,長度為0的串為空串,記作 乙個非空串通常該記作 s s1,s2 sn 字串中任意個連續的字元組成的子串行稱為該串的子串,相應地,包...