计算机上非数值处理的对象基本为字符串数据,一般简称为串。串是由零个或多个字符组成的有限序列,串中字符的数量称为串的长度,零个字符的串为“空串”。串中任意个连续的字符组成的子序列称为“子串”。包含子串的串相应地称为“主串”。字符在序列中的序号称为该字符在串中的“位置”。子串在主串中的位置以子串的第一个字符在主串中的位置来表示。当且仅当两个串的长度以及对应位置的字符都相等时,称两个串相等。
串的最小操作子集:串赋值;串比较;求串长;串联接;求子串。其他串操作均可以在这个最小子集上实现。
串的表示:
(1)定长顺序存储表示:以连续的存储单元存储串值字符序列。
分配一个固定长度的存储区,可用定长数组表示。串的实际长度在预定义长度范围内是随意的,超过预定义长度的部分被舍去,称为“截断”。这种类似线性表的顺序存储结构的串有两种表示串长的方式:①以下标为0的数组分量存放串的实际长度;②串后加一个不计入串长的结束标记字符,如C语言中的字符串以“\0”结束。
(2)堆分配存储表示:仍以一组连续的存储单元存储串值字符序列,但是他们的存储空间是在程序执行过程中动态分配得到的。C语言中用malllo