6.子串定位 StrIndex(s,t) s为主串,t为子串,操作结果是若t∈s,则操作返回t在s中首次出现的位置, 否则返回值为0。 7串插入 StrInsert(s, i, t) 串st存在,且1si≤ Strength(s)+1。操作结果是将串埔插入到串s的第个字符位 置上,s的串值发生改变。 8串删除 StrDelete(s, i, len) 串s存在,并且1≤ StrEngth(s),0≤en≤ StrEngth(s}计+1。操作结果是删除串s 中从第个字符开始的长度为en的子串,s的串值改变。 9.串替换 StrEp(str) 串str存在且t不为空,操作结果是用串r替换串s中出现的所有与串t相等的不 重叠的子串,s的串值改变。 串的基本操作中前5个操作是最为基本的,它们不能用 其他的操作来合成,因此通常将这5个基本操作称为最小 操作集。 2021年1月21日 数据结构讲义
2021年1月21日 数据结构讲义 6 ⒍子串定位 StrIndex(s,t) s为主串,t为子串,操作结果是若t∈s,则操作返回t在s中首次出现的位置, 否则返回值为0。 ⒎串插入 StrInsert(s,i,t) 串s,t存在,且1≤i≤StrLength(s)+1。操作结果是将串t插入到串s 的第i个字符位 置上,s的串值发生改变。 ⒏串删除 StrDelete(s,i,len) 串s存在,并且1≤i≤StrLength(s),0≤len≤StrLength(s)-i+1。操作结果是删除串s 中从第i个字符开始的长度为len的子串,s的串值改变。 ⒐串替换 StrRep(s,t,r) 串s,t,r存在且t不为空,操作结果是用串r 替换串s中出现的所有与串t相等的不 重叠的子串,s的串值改变。 • 串的基本操作中前5个操作是最为基本的,它们不能用 其他的操作来合成,因此通常将这5个基本操作称为最小 操作集
4.2串的定长顺序存储及基本 运算 ◆串的定长顺序 ◆定长顺序串的基本运 ◆模式匹配 2021年1月21日 数据结构讲义
2021年1月21日 数据结构讲义 7 4.2 串的定长顺序存储及基本 运算 串的定长顺序存储 定长顺序串的基本运算 模式匹配
4.2.1串的定长顺序存储 ◆用一组地址连续的存储单元存储串值中的字符序列, 所谓定长是指按预定义的大小,为每一个串变量分配 个固定长度的存储区,如: #define maXsize 256 char SIMAXSIZE 则串的最大长度不能超过256 2021年1月21日 数据结构讲义
2021年1月21日 数据结构讲义 8 4.2.1 串的定长顺序存储 用一组地址连续的存储单元存储串值中的字符序列, 所谓定长是指按预定义的大小,为每一个串变量分配一 个固定长度的存储区,如: #define MAXSIZE 256 char s[MAXSIZE]; 则串的最大长度不能超过256
如何标识实际长度? 类似顺序表,用一个指针来指向最后一个字符,这样表 的串描述如下: typedef struct i char data MAXSIZE int curlen 3 Seqstring 定义一个串变量: SeqString s 这种存储方式可以直接得到串的长度: s curlen+1。如图 所示。[ MAXSIZE a hijk□「 s aren 串的顺序存储方式 2021年1月21日 数据结构讲义
2021年1月21日 数据结构讲义 9 如何标识实际长度? 1. 类似顺序表,用一个指针来指向最后一个字符,这样表 示的串描述如下: typedef struct { char data[MAXSIZE]; int curlen; } SeqString; 定义一个串变量:SeqString s; 这种存储方式可以直接得到串的长度:s.curlen+1。如图 所示
2.在串尾存储一个不会在串中出现的特殊字符作为串的终 若符,以此表示串的结尾。比如C语言中处理定长串的方 法就是这样的,它是用’10来表示串的结束。这种存储方 法不能直接得到串的长度,是用判断当前字符是否是0 来确定串是否结束,从而求得串的长度。 char SIMAXSIZE 2345 MAXSIAE I abcdefg ko■ 串的顺序存储方式2 2021年1月21日 数据结构讲义 10
2021年1月21日 数据结构讲义 10 2. 在串尾存储一个不会在串中出现的特殊字符作为串的终 结符,以此表示串的结尾。比如C语言中处理定长串的方 法就是这样的,它是用’\0’来表示串的结束。这种存储方 法不能直接得到串的长度,是用判断当前字符是否是’\0’ 来确定串是否结束,从而求得串的长度