串的相关概念
串/字符串:由零个或多个字符组成的有限序列。
序列说明串的相邻字符之间具有前驱和后继的关系。
串的长度:串中字符的数目。
空串:零个字符的串。
空格串:只含有空格的串
子串:串中任意个数的连续字符组成的子序列
主串:包含字串的串称为主串。
串的比较
串的抽象数据类型
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);
SubString(Sub,S,pos,len);
Index(S,T,pos);
Replace(S,T,V);
StrInsert(S,pos,T);
StrDelete(S,pos,len);
串的逻辑结构和线性表相似。不同之处在于存储的元素。而且线性表关注对单个字符操作,而字符串更关注对特定子串的操作。
串的在内存中的存储结构
顺序存储
两串的连接。新串的插入,以及字符串的替代都有可能是新串的长度超过数组的长度,以至于尾部信息被截去。
经过改进,串的存储空间可在程序执行过程中动态分配。例如应用 malloc() 和 free() 函数来管理。
链式存储
最后一个结点若是未被占满,可以用“#”或其他非串值字符补全。
不如顺序存储结构灵活,性能也不如顺序存储结构好。