第四章 字串和多維陣列
※字串
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 2 稀疏矩陣的壓縮儲存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
稀疏矩陣: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 是乙個任意字元。...