18、数据结构——串——定义和特点

串的一些术语(串大家可以简单理解为字符串,字符的有限序列)

串的长度: 字符个数n。

空串: n = 0的串。

子串: 串中任意个连续的字符组成的子序列。

主串: 包含子串的串。

字符在主串中位置: 字符在串中的序号(从1开始)

子串在主串中的位置: 子串的第一个字符在主串中的位置。

串的基本操作

赋值操作: StrAssign(&T,chars),将串T赋值为chars。

复制操作: StrCopy(&T, S),将串S复制得到串T。

判空操作:StrEmpty(S) 若S为空串,则返回TRUE,否则返回FALSE。

求串长操作: StrLength(S),返回串s的元素个数。

清空操作: ClearString(&S),将S清为空串。(未回收存储空间)

销毁操作:DestroyString(&S),销毁串。将串S销毁(回收存储空间)

串连接操作: Concat(&T,S1,S2),用T返回由S1和S2联接而成的新串 。

求子串操作: SubString(&Sub,S,pos,len),求子串。用Sub返回串S的第pos个字符起长度为len的子串。

定位操作: Index(S,T),定位操作。若主串S中存在与串T值相同的子串,则返回它在主串S中第一次出现的位置;否则函数值为0。

比较操作:StrCompare(S,T),比较操作。若S>T,则返回值>0;若S=T,则返回值=0;若S<T,则返回值<0。

注意:这里的比较操作稍微介绍一下,你想要比较两个字符串的大小,需要将两个字符串从左往右依次遍历比较其对应字符的ASCII值,如果出现两个字符不同的情况,就ASCII大的字符串大.比如:“abcde”和“accde”比较:第一个字符相同,看下一个c大于b的ASCII,因此直接就是“abcde”<“accde”。如果两个字符串前面相同,那么后面有多出部分的字符串大,比如”abc” < “abcde”

串的存储(实际上就是顺序存储结构或者是链式存储结构,和前面链表的实现方式几乎一致,基本就是再讲一次)

串的基本操作和实现(请大家自己写一次再对照)

SubString()

下一节内容是:19、串——朴素模式的匹配算法!!!

一定要把本节内容看懂再往下看,不然会非常痛苦的哦o(╥﹏╥)oo(╥﹏╥)oo(╥﹏╥)o……..