串的邏輯結構與線性表極為相似,區別僅在於串的資料物件約束為字符集。
線性表操作物件大多是單個元素,而在串中一般都是以整體(字串)來作為操作物件
串的操作、實現和線性表很多不同。
串的基本操作型別不同的高階語言可以有不同的定義方法。
串賦值,串複製,比較,求長度,連線,求子串,串清除,串銷毀
定長順序儲存表示
堆分配儲存表示
塊鏈儲存表示
kmp演算法解決了指標回溯的問題,讓主串的指標不再回溯,只有模式串回溯
kmp演算法的時間複雜度可以達到o(m+n)
時間複雜度按最壞的情況來算
求next函式本身是乙個遞推的過程
前面符合條件的最大子串
**實現:
#define maxstrlen 255
//最大串長
typedef
unsigned
char sstring[maxstrlen +1]
// 0號單元存放串的長度,255
// 0,1,2,3,...,255
1、串連線函式
主要運算是字串行的複製。
此時需要考慮三種情況,判斷是否需要截斷。
status concat
( sstring &t,sstring s1,sstring s2)
for(
int i =
1,i <= s2[0]
;i++
) t[0]
= s1[0]
+ s2[0]
;}else
if( s1[0]
< t[0]
)//超過了部分,但能完全覆蓋第乙個串
for(
int i =
1;i <= maxstrlen - s1[0]
;i++
) t[0]
= maxstrlen;
}else
//第乙個就超過了
t[0]
= maxstrlen;
}return ok;
}
2、求子串
substring( & sub , s , pos , len )
將串 s 中從第 pos 個字元開始,長度為 len 的字串序列複製到 sub 中。
難點是判斷輸入引數是否正確。
status substring
( sstring &sub,sstring s,
int pos,
int len )
sub[1.
.. len]
= s[pos ...
(pos + len -1)
];sub[0]
= len;
return ok;
}
資料結構之串
串string 由零個或多個字元組成的有限序列,又名叫字串 串的比較是通過組成串的字元之間的編碼來進行比較的,而字元的編碼指的是字元在對應的字符集中的序號 ascii是american standard code for information interchange縮寫 常用字元標準ascii編碼...
資料結構之串
串由零個或多個字元組成的有限序列,又名叫字串。串中字元數目n是成為串的長度,零個字元的串稱為空串。adt 串 string data 串中元素僅由乙個字元組成,相鄰元素具有前驅和後繼關係。operation strassign t,chars 生成乙個其值等於字串常量chars的串t。strcopy...
資料結構之串
定義 1 串是由零個或多個字元組成的有限序列,又名叫字串。2 字串簡稱串,是一種特殊的線性表,它的資料元素僅由乙個字元組成。概念 1 長度 串中字元的個數,稱為串的長度。2 空串 長度為零的字串稱為空串。3 空格串 由乙個或多個連續空格組成的串稱為空格串。4 串相等 兩個串相等,是指兩個串的長度相等...