第四章 串 陣列和廣義表

2021-07-04 13:14:48 字數 1331 閱讀 4195

一、串

1.順序儲存

//順序儲存

struct hstring ;

2.鏈式儲存

//鏈式儲存

#define chuncksize 80//使用者定義塊的大小,每一塊

3.串的模式匹配演算法

bf演算法(經典)和kmp演算法(速度快)

bf演算法:

index(s,t,pos)將主串s的第pos個字元和模式t的第乙個字元比較,若相等,繼續逐個比較後續字元;若不等,從主串的下乙個字元起,重新與模式的第乙個字元比較。

若匹配成功,則返回s中與t匹配的子串行的第乙個字元位置;不成功為0

}回溯法:總比較次數為(n-m)*m+m=(n-m+1)*m

若mkmp演算法:

可提高至o(n+m)

當每一匹配比較不等時,不需回溯指標,而根據部分匹配的結果將模式向右滑動至主串不匹配的位置

#include

串比較:strcmp(char s1,char s2)

串複製:strcpy(char to,char from)

串連線:strcat(char to,char from)

求串長:strlen(char s)

二、陣列

順序和鏈式都有,順序常見

1.順序a[n][m]

以行序/列序為主序

行序優先 loc(0,0)=a, 則loc(j,k)=a+j*m+k;

2.特殊矩陣的壓縮儲存-對稱矩陣、三角矩陣,對角矩陣,稀疏矩陣

多個資料元素值相同,0不佔儲存空間

三、廣義表

線性表是一種特殊的廣義表,廣義表不一定是線性結構

特點:有次序性、有長度、有深度、可遞迴、可共享

基本運算:求表頭gethead(l)

求表尾gettail(l)

第四章串 陣列 廣義表(4 1 4 3 2)

目錄4.3串的型別定義 儲存結構及其運算 串 string 是由零個或者多個字元組成的有限序列,又名叫字串。一般記為s a1a2 an n 0 其中s是串的名稱,用雙引號括起來括起來的字串行是串的值,引號不屬於串的內容。ai 1 i i 可以是字母,數字或者其他字元,i就是該字元在串中的位置。串中的...

第四章串 陣列 廣義表(4 4 4 5)

目錄4.4.2陣列的順序儲存 4.4.3特殊矩陣的壓縮儲存 2.三角矩陣 3.對角矩陣 4.5廣義表 n維陣列中含有 i 1 n b i prod n b i i 1nbi個資料元素,每個資料元素都受著n個關係的約束 在每個關係中,元素 a j 1 j 2 j n 0 j i b i 2 a 0 l...

第四章 串 陣列和廣義表 順序串的基本操作

include define true 1 define false 0 define ok 1 define error 0 define overflow 2 define maxstrlen 255 typedef int status typedef int elemtype typedef...