本章節主要內容:
字串儲存
模式匹配
陣列的邏輯結構特徵
陣列的儲存方式及定址方法
特殊矩陣和稀疏矩陣的壓縮儲存方法
一、字串
1、串:零個或多個字元組成的有限序列。
串長度:串中所包含的字元個數。
空串:長度為0的串,記為「 」。
非空串表示:s=」s1,s2…sn"(s為串名,「」為定界符,其中為串值,si為任意字元。
2、串的邏輯結構
順序串:用陣列來儲存串中的字串行。
表示串的長度:
用乙個變數來表示串的實際長度。
在串尾儲存乙個不會在串**現的特殊字元作為串的終結符,表示串的結尾。
非壓縮形式
壓縮形式
3、模式匹配
①給定主串s="s1s2…sn"和模式t=「t1t2…tm」,在s中尋找t的過程。——如果匹配成功,返回t在s中的位置,如果匹配失敗,返回-1。假設串採用順序儲存結構,串值從0號單元開始存放。
②應用:生物資訊學(基因表達分析,基因配對)、資訊檢索、拼寫檢查、語言翻譯、資料壓縮、網路入侵檢測
③bf(brute-force)演算法:
從主串s的第0個字元開始和模式t的第0個字元進行比較,若相等,則繼續比較兩者的後續字元;否則從主串s的第1個字元開始和模式t的第0個字元進行比較,重複,直到t中的字元全部比較完畢,則說明本趟匹配成功;或s中字元全部比較完,則說明匹配失敗。
⭐模式匹配過程要進行多趟的匹配,每趟匹配要進行若干次的比較
int bf(char s,char t)
設串s長度為n,串t長度為m,在匹配成功的情況下,考慮:
最好:不成功的匹配都發生在串t的第乙個字元。例如:s=「aaaaaaaaaabcdccccc」,t=「bcd」
最壞:不成功的匹配都發生在串t的最後乙個字元。例如:s=「aaaaaaaaaabccccc」,t=「aaab」
④kmp(knuth-morris-pratt)演算法
i可以不回溯,模式向右滑動到的新比較起點k,並且k僅與模式串t有關。
next【j】表徵著模式t中最大相同字首子串和左子串(真子串)的長度。
void compute_next(char t,int next)
}用偽**描述:
在串s和串t中分別設比較的起始下標i和j;
2.迴圈直到s中所剩字元長度小於t的長度或t中所有字元均比較完畢
①如果s[i]==t[j],繼續比較s和t的下乙個字元;否則
②將j向右滑動到next【j】位置,即j=next【j】;
③如果j=1,則將i和j分別加1,準備下一趟比較;
3.如果t中所有字元均比較完畢,則返回匹配的起始下標;否則返回-1。
三、多維陣列
1、陣列的定義:陣列是由一組型別相同的資料元素構成的有序集合,每個元素受n(n≥1)個線性關係的約束,並稱該陣列為n維陣列。
2、元素本身可以具有某種結構,屬於同一資料型別;
陣列是乙個具有固定格式和數量的資料集合。
3、線性表的推廣:
二維陣列是資料元素為線性表的線性表。
4、陣列的基本操作:
①訪問②修改
訪問和修改操作本質上只對應一種操作——定址
⭐順序儲存
5、陣列的儲存結構與定址——二維陣列
常用的對映方法:
①按行優先:先行後列
aij前面的元素個數
=整行數每行元素個數+本行中aij前面的元素個數
=(i-l1)(h2-l2+1)+(j-l2)
②按列優先:先列後行
四、矩陣的壓縮儲存
1、特殊矩陣和稀疏矩陣
壓縮儲存的基本思想:
①為多個值相同的元素只分配乙個儲存空間;
②對零元素不分配儲存空間
2、對稱矩陣、對角矩陣
3、三元組順序表
稀疏矩陣的修改操作->三元組順序表的插入/刪除操作
4、儲存結構定義:
const int maxterm=100;
template
struct sparsematrix
;五、廣義表
1、廣義表與線性表的區別
①線性表的成分都是結構上不可分的氮元素
②廣義表的成分可以是單元素,也可以是有結構的表
③線性表是一種特殊的廣義表
④廣義表不一定是線性表,也不一定是線性結構
2、廣義表的基本運算
①求表頭gethead(l)
②求表尾gettail(l)
3、廣義表的儲存
不能用順序儲存結構
用頭尾表示法
資料結構 字串和多維陣列
第 4 章 字串和多維陣列 本章的基本內容是 字串。在程式語言中大都有串變數的概念,而且實現了基本的串操作,本章重點討論串的儲存結構及模式匹配演算法。陣列。在程式語言中大都提供了陣列作為構造資料型別,本章重點討論陣列以及特殊矩陣的儲存與定址。4.1 字串 主要內容 4.11 字串的定義 4.12 字...
資料結構 字串和多維陣列
本章節主要內容 字串儲存 模式匹配 陣列的邏輯結構特徵 陣列的儲存方式及定址方法 特殊矩陣和稀疏矩陣的壓縮儲存方法 一 字串 1 串 零個或多個字元組成的有限序列。串長度 串中所包含的字元個數。空串 長度為0的串,記為 非空串表示 s s1,s2 sn s為串名,為定界符,其中為串值,si為任意字元...
字串和多維陣列
一 字串 1 字串的定義 是零個或多個字串組成的有限序列,只包含空格的串稱為空格串。2 字串中任意個連續的字元組成的子串行稱為該穿的子串,包含子串的串稱為主串,子串的第乙個字元咋主串中的序號稱為子串在主串中的位置。3 模式匹配 給定兩個字串s和t,在主串s中尋找子串t的過程稱為模式匹配,t為模式。如...