一、 串的基本概念
串(或字符串),是由零个或多个字符组成的有穷序列。
含零个字符的串称为空串,用Ф表示。串中所含字符的个数称为该串的长度(或串长)。
通常将一个串表示成“a1a2…an”的形式。其中最外边的双引号本身不是串的内容,它们是串的标志,以便将串与标识符(如变量名等)加以区别。每个ai(1≤i≤n)代表一个字符。
当且仅当两个串的长度相等并且各个对应位置上的字符都相同时,这两个串才是相等的。
一个串中任意个连续字符组成的子序列(含空串)称为该串的子串。例如,“a”、“ab”、“abc”和“abcd”等都是“abcde”的子串(真子串是指不包含自身的所有子串)。
二、串的顺序存储及其基本操作实现
在顺序串中,串中的字符被依次存放在一组连续的存储单元里。一般来说,一个字节(8位)可以表示一个字符(即该字符的ASCII码)。
因此,一个内存单元可以存储多个字符。例如,一个32位的内存单元可以存储4个字符(即4个字符的ASCII码)。
串的顺序存储有两种方法:一种是每个单元只存一个字符,这称为非紧缩格式(其存储密度小);另一种是每个单元存放多个字符,这称为紧缩格式(其存储密度大)。
对于非紧缩格式的顺序串,其类型定义如下:
#define MaxSize 100
typedef struct
{ char data[MaxSize];
int length;
} SqString;
顺序串中实现串的基本运算如下:
(1)StrAssign(s,cstr)