大話資料結構 第5章 串

2021-10-09 22:34:38 字數 1927 閱讀 2669

####僅作為筆記

串是由零個或多個字元組成的有限序列,又名字串。

兩個串比較大小:

給定兩個串:s=「a1 a2 … an」,t=「b1 b2 … bm」,當滿足以下條件之一時,sn < m, 且 ai = bi(i=1, 2, 3, …, n)。

存在某個k<=min(m,n),使得ai = bi(i=1, 2, …, k-1),ak < bk。

串的抽象資料型別:

adt 串(string)

data

串中元素僅有乙個字元組成,相鄰元素具有前驅和後繼的關係。

operation

strassign

(t,*chars)

: 生成乙個其值等於字串常量的chars的串t。

strcopy

(t,s)

: 串s存在,由串s複製得串t。

clearstring

(s): 串s存在,將串清空。

stringempty

(s): 若串s為空,返回true,否則返回false。

strlength

(s): 返回串s的元素個數,即串的長度。

strcompare

(s,t)

: 若s>t,返回值》

0,若s=t,返回0

,若s0。 concat

(t,s1,s2)

: 用t返回由s1和s2聯接而成的新串。

substring

(sub,s,pos,len)

: 串s存在,1

<=pose<=

strlength

(s),且0

<=len<=

strlength

(s)-pos+

1,用sub返回串s的第pos個字元起長度為len的子串。

index

(s,t,pos)

: 串s和t存在,t是非空串,

1<=pose<=

strlength

(s),若主串s中存在和串t值相同的子串,則返回它在主串s中第pose個字元之後第一次出現的位置,否則返回0。

replace

(s,t,v)

: 串s、t和v存在,t是非空串。用v替換主串s**現的所有與t相等的不重疊的子串。

strinsert

(s,pos,t)

: 串s和t存在,1

<=pose<=

strlength

(s)+

1。在串s的第pos個字元之前插入t。

strdelete

(s,pos,len)

: 串s存在,1

<=pose<=

strlength

(s)-len+

1。從串s中刪除第pos個字元起長度為len的子串。

endadt

kmp 模式匹配演算法實現

/*通過計算返回子串t的next陣列*/

void

get_next

(string t,

int*next)

else

j = next[j]

;/*若字元不相同,則j值回溯*/

}}

/*返回子串t在主串s中第pos個字元之後的位置。若不存在,則函式返回值為0*/

/*t非空,1 <= pos <= strlength(s)。*/

intindex_kmp

(string s, string t,

int pos)

else

j = next[j]

;/*j退回合適的位置,i值不變*/}if

(j > t[0]

)return i - t[0]

;else

return0;

}

大話資料結構 第2章 演算法

3 演算法設計的要求 4 演算法效率的度量方法 5 函式的逐漸增長 6 演算法時間複雜度 7 常見的時間複雜度 8 最壞情況與平均情況 9 演算法空間複雜度 總結 演算法的定義 演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每一條指令表示乙個或者多個操作。演算法的特性 輸入...

大話資料結構 串

1.串的定義 串是由0個或多個字元組成的有限序列,也叫做字串。串中 字元數目n稱為串的長度。子串 串中任意個數的連續字元組成的子串行稱為該字串的子串,包含該子串的串稱為主串。子串中的位置就是該子串第乙個字元在主串中的序號。2.串的比較 計算機的字串標準包括 ascii碼和unicode碼。其中asc...

大話資料結構 串

串 由零個或多個字元組成的有限序列,又名叫字串。操作index的實現演算法 t為非空串。若主串s中第pos個字元之後存在與t相等的子串,則返回第乙個這樣的子串在s中的位置,否則返回0 intindex string s,string t,int pos return0 若無子串與t相等,返回0 用基...