串
串的定义
- 串是由零个或多个字符组成的有限序列。一般记为S=‘a1a2…an’ (n>=0)。
串的特性
- 串中任意多个连续的字符组成的子序列称为该串的子串,包含子串的串称为主串。串的逻辑结构和线性表极为相似,区别仅在于串的数据对象限定为字符集。串的基本操作通常以子串作为操作对象,如查找、插入或删除一个子串等。
串的存储结构
定长顺序存储
-
串长的两种表示方法
- 用一个额外的变量1en 来存放串的长度。
- 在串值后面加一个不计入串长的结束标记字符“\0”。
-
截断
- 串的实际长度只能小于等于 MAXLEN,超过预定义长度的串值会被舍去。
-
代码
#define MAXLEN 255 //预定义最大串长为255
typedef struct{
char ch[MAXLEN]; //每个分量存储一个字符
int length; //串的实际长度
}SString;
堆分配存储
- 代码
typedef struct{
char *ch; //按串长分配存储区,ch指向串的基地址
int length; //串的长度
}HString;
-
描述
- 存在一个称之为“堆”的自由存储区,并用malloc()和free()函数来完成动态存储管理。
-
分配
- 用malloc()为每个新产生的串分配一块实际串长所需的存储空间,若分配成功,则返回一个指向起始地址的指针,这个串由ch指针来指示。
-
释放
- 已分配的空间可用free()释放掉。
块链存储
-
描述
- 每个结点既可以存放一个字符,也可以存放多个字符。每个结点称为块,整个链表称为块链结构。