严蔚敏视频 笔记10
第四章 串
4.1 串的抽象数据类型的定义
ADT String {
数据对象:D={ai|ai∈CharacterSet,i=1,2,…n,n>=0}
数据关系:R1={<ai-1,ai>|ai-1,ai∈D,i=2,…n}
基本操作:
StrAssign(&T,chars) 赋值
StrCompare(S,T) 按字典顺序比较大小
StrCopy(&T,S) 复制
StrLength(S) 求长度
ClearString(&S) 清空
DestroyString(&S) 销毁
Concat(&T,S1,S2) 联接
StrEmpty(S) 判串空
SubString(&Sub,S,pos,len) 求子串
Index(S,T,pos) 子串定位
Replace(&S,T,V) 置换
StrInsert(&S,pos,T) 插入
StrDelete(&S,pos,len) 删除
}
串和线性表逻辑结构相似,区别仅为串的数据对象约束为字符集
基本操作对象不同,线性表为单个元素,而串是串的整体
最小操作子集:
StrAssign、StrCopy、StrCompare、 StrLength、Concat、
SubString
其它可以相应实现
C语言里有特定的函数
4.2 串的表示和实现
一、串的定长顺序存储表示
#define MAXSTRLEN 255
// 用户可以在255以内定义最大串长
typedef unsigned char Sstring[MAXSTRLEN+1];
// 0号单元存放串的长度
超过长度会被“截断”
联接算法要分3种情况处理
基本操作:字符序列的复制