資料結構筆記 第四章 字串和多維陣列

2021-09-29 04:09:00 字數 1929 閱讀 7167

第四章 字串和多維陣列

※字串

4.2.1字串的邏輯結構

在c語言,c++中,字串以\0結束,可整體輸出。

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

4.2.2 字串的儲存結構

有三種方法表示字串的長度

①在陣列最後乙個位置(maxsize-1)儲存串長度

②用陣列的0號單元儲存串的長度

③判斷當前字元是否為「\0」來確定串是否結束,從而求得串的長度。

4.2.3 模式匹配

1.bf演算法

函式定義:

int bf(char s[ ], char t[ ]);

char s1[100], s2[10];

int index = 0;

cout << 「請輸入主串:」;

cin >> s1;

cout << 「請輸入模式串:」;

cin >> s2;

index = bf(s1, s2);

if (index == 0)

cout << s2 << 「不是」 << s1 << 「的子串」 << endl;

else

cout << s2 << 「在」 << s1 << "的位置是: " << index << endl;

return 0;

}int bf(char s[ ], char t[ ])

else /i和j分別回溯/

}if (t[j] == 『\0』) return start + 1; /返回本趟匹配的起始位置/

else return 0;

2.kmp
特點:主串不回溯,迴圈次數少。

p105

4.3多維陣列
儲存:按行優先,按列優先

4.4 矩陣的壓縮儲存

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

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

4.4.1 特殊矩陣的壓縮儲存(對稱矩陣,三角矩陣,對角矩陣)

陣列下標從0開始

1.對稱矩陣的壓縮儲存

a i j在一維陣列中的下標:k=i*(i-1)/2+j-1

2.三角矩陣的壓縮儲存

a i j在一維陣列中的下標:k=(i-1)*(2n-i+2)/2+j-i

3.對角矩陣的壓縮儲存

所有非零元素都集中在主對角線為中心的帶狀區域

a i j在一維陣列中的下標:k=2i+j-3

4.4 2 稀疏矩陣的壓縮儲存

稀疏矩陣:0元素居多的矩陣

三元組(行號 列號 非0元素值)

定義 :

template

struct element

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

1.三元組順序表

const int maxterm=100;

struct sparsematrix

;2.十字鍊錶

struct orthnode

;4.5.2 廣義表

定義:資料元素的型別可以不相同的線性表。

每個元素可以是單個的資料元素,也可以是乙個廣義表,分別稱廣義表的單元素和子表。通常用大寫字母表示廣義表,用小寫字母表示單元素。

當廣義表非空時,稱第乙個元素為廣義表的表頭,除去表頭後的其餘元素構成的廣義表稱為廣義表的表位。資料元素個數稱為長度;括號最大巢狀層數稱深度。

儲存:鏈式儲存

兩種結點結構:表結點,元素結點

表結點: tag=1 |hp|tp 元素結點:tag=0|data

其中:tag區分表結點和元素結點的標誌(1表結點,0元素結點)

hp指向表頭的指標

tp指向表尾的指標

data存放單元素的資料域

資料結構筆記 第四章 字串和多維陣列

串的邏輯結構 串 零個或多個字元組成的有限序列。串長度 串中所包含的字元個數。空串 長度為0的串,記為 子串 串中任意個連續的字元組成的子串行。主串 包含子串的串。子串的位置 子串的第乙個字元在主串中的序號。順序串 用陣列來儲存串中的字串行。模式匹配 bf演算法 1.在串s和串t中設比較的起始下標i...

資料結構 第四章 字串和多維陣列

第四章 字串和多維陣列 4.1 字串 4.1.1 字串的定義 1.字串的定義 字串是零個或多個組成的有限序列,只包含空格的串成為空格串。串中所包含的字元個數成為串的長度,長度為0的串為空串,記作 乙個非空串通常該記作 s s1,s2 sn 字串中任意個連續的字元組成的子串行稱為該串的子串,相應地,包...

資料結構 第四章 字串和多維陣列

4.1字串 4.1.1 字串的定義 1.定義 字串是零個或多個字元組成的有限序列,只包含空格的串稱為空格串。串中所包含的字元個數稱為串的長度,長度為零的串稱為空串,記作 p非空串通常記為 s s1s2 sn 其中 s是串名,雙引號是定界符,雙引號引起來的部分是串值 si 1 i n 是乙個任意字元。...