您的位置:首页 > 理论基础 > 数据结构算法

数据结构——字符串(未完)

2017-08-03 17:11 120 查看

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
串中元素仅由一个字符组成,相邻元素具有前驱和后继关系。
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,若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的子串。
endADT


4、串的存储结构

4.1 串的顺序存储结构

一组地址连续的存储单元来存储串中的字符序列的。按照预定义的大小,为每个定义的串变量分配一个固定长度的存储区。一般是用定长数组。‘\0’来表示串值的终结。

4.2 串的链式存储结构

一个结点可以存放一个字符或者多个字符,最后一个结点若是未被占满时,可以用#或其他非串值补全。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 string