山東中醫藥大學電腦科學與技術2班王鑫童第4章筆記

2021-06-26 16:59:26 字數 2077 閱讀 2295

第4章 字串和多維陣列

字串。在程式語言中大都有串變數的概念,而且實現了基本的串操作,本章重點討論串的儲存結構及模式匹配演算法。

陣列。在程式語言中大都提供了陣列作為構造資料型別,本章重點討論陣列以及特殊矩陣的儲存與定址。

串:零個或多個字元組成的有限序列。

串長度:串中所包含的字元個數。

空串:長度為0的串,記為:" "。

非空串通常記為:

s=" s1 s2 …… sn "

其中:s是串名,雙引號是定界符,雙引號引起來的部分是串值 ,si(1≤i≤n)是乙個任意字元。

子串:串中任意個連續的字元組成的子串行。

主串:包含子串的串。

子串的位置:子串的第乙個字元在主串中的序號。

串的資料物件約束為某個字符集。

微機上常用的字符集是標準ascii碼,由 7 位二進位制數表示乙個字元,總共可以表示 128 個字元。

擴充套件ascii碼由 8 位二進位制數表示乙個字元,總共可以表示 256 個字元,足夠表示英語和一些特殊符號,但無法滿足國際需要。

unicode由 16 位二進位制數表示乙個字元,總共可以表示 216個字元,能夠表示世界上所有語言的所有字元,包括亞洲國家的表意字元。為了保持相容性,unicode字符集中的前256個字元與擴充套件ascii碼完全相同。 

模式匹配:給定主串s="s1s2…sn"和模式t="t1t2…tm",在s中尋找t 的過程稱為模式匹配。如果匹配成功,返回t 在s中的位置;如果匹配失敗,返回0。

bf演算法

基本思想:從主串s的第乙個字元開始和模式t 的第乙個字元進行比較,若相等,則繼續比較兩者的後續字元;否則,從主串s的第二個字元開始和模式t 的第乙個字元進行比較,重複上述過程,直到t 中的字元全部比較完畢,則說明本趟匹配成功;或s中字元全部比較完,則說明匹配失敗。1. 在串s和串t中設比較的起始下標i和j;

2. 迴圈直到s或t的所有字元均比較完

2.1 如果s[i]=t[j],繼續比較s和t的下乙個字元;

2.2 否則,將i和j回溯,準備下一趟比較;

3. 如果t中所有字元均比較完,則匹配成功,返回匹配的起始比較下標;否則,匹配失敗,返回0;

最好情況:不成功的匹配都發生在串t的第1個字元。

最壞情況:不成功的匹配都發生在串t的最後乙個字元。

模式匹配——kmp演算法

結論: i可以不回溯,模式向右滑動到的新比較起點k ,並且k 僅與模式串t有關!

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;

陣列的定義

陣列是由一組型別相同的資料元素構成的有序集合,每個資料元素稱為乙個陣列元素(簡稱為元素),每個元素受n(n≥1)個線性關係的約束,每個元素在n個線性關係中的序號i1、i2、…、in稱為該元素的下標,並稱該陣列為 n 維陣列。

陣列的特點

元素本身可以具有某種結構,屬於同一資料型別;

陣列是乙個具有固定格式和數量的資料集合。

常用的對映方法有兩種:

按行優先:先行後列,先儲存行號較小的元素,行號相同者先儲存列號較小的元素。

按列優先:先列後行,先儲存列號較小的元素,列號相同者先儲存行號較小的元素。

特殊矩陣:矩陣中很多值相同的元素並且它們的分布有一定的規律。

稀疏矩陣:矩陣中有很多零元素。

壓縮儲存的基本思想是:

⑴ 為多個值相同的元素只分配乙個儲存空間;

⑵ 對零元素不分配儲存空間。

對角矩陣:所有非零元素都集中在以主對角線為中心的帶狀區域中,除了主對角線和它的上下方若干條對角線的元素外,所有其他元素都為零。

三元組表:將稀疏矩陣的非零元素對應的三元組所構成的集合,按行優先的順序排列成乙個線性表。

稀疏矩陣的壓縮儲存——十字鍊錶

採用鏈結儲存結構儲存三元組表,每個非零元素對應的三元組儲存為乙個鍊錶結點。

山東中醫藥大學電腦科學與技術2班王鑫童第3章筆記

棧與佇列 棧 限定僅在表的一端進行插入和刪除操作的線性表.允許插入和刪除的一端稱為棧頂,另一端稱為棧底。空棧 不含任何資料元素的棧。注意 棧只是對錶插入和刪除操作的位置進行了限制,並沒有限定插入和刪除操作進行的時間。棧中元素具有相同型別及後進先出特性,相鄰元素具有前驅和後繼關係.兩棧共享空間 使用乙...

山東中醫藥大學電腦科學與技術2班王鑫童第7章筆記

在表中的位置 若整個表檢測完仍未找到與給定值相等的關鍵碼,則查詢失敗,給出失敗資訊。改進的順序查詢 基本思想 設定 哨兵 哨兵就是待查值,將它放在查詢方向的盡頭處,免去了在查詢過程中每一次比較後都要判斷查詢位置是否越界,從而提高查詢速度。順序查詢的缺點平均查詢長度較大,特別是當待查詢集合中元素較多時...

山東中醫藥大學資料結構第三章棧與佇列

3.1 棧 3.1.1棧的邏輯結構 1.棧的定義 棧是限定僅在表尾進行插入和刪除操作的線性表,允許插入和刪除的一端稱為棧頂,另一端稱為棧底,不含任何元素的棧稱為空棧。注意 棧只是對錶插入和刪除操作的位置進行了限制,並沒有限定插入和刪除操作進行的時間。2.棧的抽象資料型別定義 adt stack da...