一、串
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...