字符串
字符串,简称串,一种特殊的线性表,表中的每个元素都是一个字符。一个串可以记为$S=”s_{0},s_{1},\dots,s_{n-1}”(n\geqslant 0)$,$S$是串的名字;字符序列$s_{0},s_{1},\dots,s_{n-1}$是串的值;字符个数称为串的长度。长度为0的串称为空串,写成s=””,与空白字符构成的串s=” “不同。
子串,字符串$s1$中任意个连续的字符组成的子序列$s2$被称为是$s1$的字串,而称$s1$是$s2$的主串。空串是任意串的子串,除s外,s的其他子串称为s的真子串。子串在主串中的位置指:该子串的第一个字符在主串中的位置。
两个字符串相等:两个字符串长度相等,且各个对应位置上的字符都相同。
如果整个字符集上有全(线)序关系,则两个字符串之间有如下字典序关系:设$A=a_{0}a_{2}\dots a{n-1},B=b_{0}b_{2}\dots b_{m-1}$,则$A\lt B$: 若存在$k$使$a_{i}=b_{i}(i=0,1,\dots,k-1)$,但是$a_{k}\lt b_{k}$;或者$n<m$,且$a_{i}=b_{i}(i=0,1,\dots,n-1)$。
抽象数据类型
1 | ADT String is |
字符串顺序实现
1 | struct SeqString {/*顺序串的类型*/ |
字符串链接表示
在串的链接表示中,每个节点包含两个字段:字符和指针,分别用于存放字符和指向下一个节点的指针。这样一个串就可以用一个单链表来表示。
1 | struct StrNode; /*链串的节点*/ |