数据结构之串
一、串的概念
串:零个或多个任意字符串组成的有限序列
S="a1 a2 ... an"
S :串名 a1-an:串值 n是串长, n=0是空串
字串:一个串中任意个连续字符组成的子序列(含空串)称为该串的子串
“abcde”的子串有:
“”、“a”、“ab”、“abc”、...... 、“abcde”(包括自身)等等
真子串是指不包括自身的所有子串
主串:包含子串的串相应地称为主串
字符位置:字符在序列中序号为该字符在串中的位置
子串位置:子串第一个字符在主串中的位置
空格串:有一个或多个空格组成的串 (与空串不同)
串相等:当且仅当两个串的长度相等并且各个对应位置上的字符都相等时,这两个串才是相等的
(所有的空串是相当的)
二、串的类型定义
ADT String {
D = {ai | ai ∈ CharacterSet, i = 1,,2,...n, n>=0} (数据对象)
R1 = {<ai-1,ai> ai-1,ai∈D,i= 1,2,...,n} (数据关系,依次对应)
}
三、串的顺序存储结构
#define MAXLEN 255
typedef struct {
char ch[MAXLEN+1]; // 存储串的一维数值
int length // 串的长度
}
四、串的链式存储结构
优点:方便操作,确定:存储密度较低
但是可将多个字符存放在一个结点中,以克服其缺点
// 定义每一个结点块的大小
#define CHUNKSIZE 80
typedef struct Chunk {
char ch[CHUNKSIZE]
struct Chunk *next
}Chunk
// 定义串的整体结构
typedef struct{
Chunk *head,*tail // 串的头指针和尾指针
int curlen // 串的当前长度
}LString // 字符串的块链结构

浙公网安备 33010602011771号