数据结构——字符串(未完)
1、相關概念
串(string):由零個或多個字符組成的有限序列,又稱字符串。
一般記作 s = “a1,a2……an” (n>0),其中,s為字符串的名稱,其值是用雙引號括起來的字符序列a1,a2……an。
串的長度:串中的字符數目n
空串:兩個字符的串,其長度為0,可用兩雙引號“”“”或希臘字母Φ表示。
特殊的串
空格串:只包含空格的串,不同于空串,其長度不為0。
子串與主串:串中任意個數的連續字符組成的子序列稱為該串的子串,相應地,包含子串的串稱為主串。子串在主串中的位置就是子串的第一個字符在主串中的序號。
2、串的比較
??串的比較是通過組成串的字符之間的編碼來進行的,而字符的編碼指的是字符在對應字符集中的序號。 即:從第一個字符開始,比較它們的編碼值的大小,直到有一方大于另一方為止。
常用編碼
????標準的ASCII編碼,由7位二進制數表示一個字符,總共可以表示128個字符。Unicode編碼,比較常用的是由16位的二進制數表示一個字符,Unicode的前256個字符與ASCII碼完全相同。
比較步驟:
給定兩個串:s=”a1a2……an”,t=”b1b2……bm”。當滿足以下條件之一時,s < t。
??1. n < m, 且 ai=bi( i = 1, 2, ……, n)。
??2. 存在某個k < min(m, n),使得ai=bi (i=l, 2, ……, k—1), ak < bk。
3、抽象數據類型
串的操作中更加注重對子串的操作,而不是對于單個字符。
ADT 串(string) Data串中元素僅由一個字符組成,相鄰元素具有前驅和后繼關系。 OperationStrAssign(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,若S<T,返回值<0。Concat(T, S1, S2): 用T返回由S1和S2聯接而成的新串。SubString(Sub, S, pos, len): 串S存在,1≤pos≤StrLength(S),且0≤len≤StrLength(S)-pos+1,用Sub返回串S的第pos個字符起長度為len的子串。Index(S, T, pos): 串S和T存在,T是非空串,1≤pos≤StrLength(S)。若主串S中存在和串T值相同的子串,則返回它在主串S中第pos個字符之后第一次出現的位置,否則返回0。Replace(S, T, V): 串S、T和V存在,T是非空串。用V替換主串S中出現的所有與T相等的不重疊的子串。StrInsert(S, pos, T): 串S和T存在,1≤pos≤StrLength(S)+1。在串S的第pos個字符之前插入串T。StrDelete(S, pos, len): 串S存在,1≤pos≤StrLength(S)-len+1。從串S中刪除第pos個字符起長度為len的子串。 endADT4、串的存儲結構
4.1 串的順序存儲結構
用一組地址連續的存儲單元來存儲串中的字符序列的。按照預定義的大小,為每個定義的串變量分配一個固定長度的存儲區。一般是用定長數組。‘\0’來表示串值的終結。
4.2 串的鏈式存儲結構
一個結點可以存放一個字符或者多個字符,最后一個結點若是未被占滿時,可以用#或其他非串值補全。
總結
以上是生活随笔為你收集整理的数据结构——字符串(未完)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构——队列(queue)
- 下一篇: OpenCV结合socket进行实时视频