串的定义:串是字符串的简称。在数据结构中,串是一种在数据元素的组成上具有一定约束条件的线性表,即要求组成线性表的所有数据元素都是字符,所以说串是一个有穷的字符序列。
串是由零个或多个字符组成的有限序列,记作s=”s0s1…sn-1”(n≥0),其中s是串名,字符个数n称作串的长度,双撇号括起来的字符序列”s0s1…sn-1”是串的值。每个字符可以是字母、数字或任何其它的符号。零个字符的串(即:””)称为空串,空串不包含任何字符。值得注意的是:(1)长度为1的空格串" “不等同于空串”";
(2)值为单个字符的字符串不等同于单个字符,如"a"与′a′;
(3)串值不包含双撇号,双撇号是串的定界符。
串中任意个连续的字符组成的子序列称为该串的子串。包含子串的串则称为主串。通常将字符在串中的序号称为该字符在串中的位置。子串在主串钟的位置则以该子串在主串中的第一个字符位置来表示。为了让大家更好的理解子串,举个简单的例子说明。如:
字符串的基本算法:
字符串的抽象数据类型:数据集合:串的数据集合可以表示为字符串序列S0,S1….Sn-1,每个数据元素的数据类型为字符类型
操作集合:1初始化串 2 赋值 3求串长度
4比较:有相等和不相等两种比较结果 还有大于等于小于三种比较结果 5.插入6.删除
7.取字符串 8.查找字串 9.替换子串
串的线性存储结构和基本运算的实现:
串及其基本运算在程序中是如何实现的呢?串是在程序中比较常见的线性存储结构,也就是用一个连续的存储空间把串的每一个字符按照一定顺序存储起来。所以,在定义一个串之前,我们得先申请一个足够可以容纳字符串的空间
串的线性存储代码如下:
串的赋值运算:空间定义好了,接着就要往空间里存储具体的字符串了,也就是给串赋值。
求串的长度:每个串都有它的长度,Length函数可以方便地求出串的长度。
判断两个串是否相等:断两个串是否相等,要求串的长度以及串的每个字符所在的位置都要相等。
求子串:子串的实现思路是,在已知的串里寻找串的第i个位置之后长度为len的字符串。
串值的连接:两串连接为例,已知s串和t串,串的连接就是将s串和t串的首尾相连,变成一个长度为s.StrLength+t.StrLength的新串
插入子串:入子串的实现思路是找到插入的位置i,把第i个以后的字符分别往后移动t.StrLength的位置,修改串的长度。
删除子串
删除子串的实现思路是在已知串s中,从第i个字符以后把第i+len个字符覆盖第i+1个字符,第i+len+1个覆盖第i+2个,如此类推,一直到′\0′结束,最后修改串的长度。