基本操作的功能说明2 StrEngth(s) 初始条件:字符串S已经存在。 操作结果:返回串S元素个数,称为串的长度。 ClearString(&s) 初始条件:字符串S已经存在。 操作结果:将串S清为空串。 Concat(&T,s1, s2) 初始条件:字符串S1,S2已经存在 操作结果:用T返回由串S1和S2联结而成的新串。 Substring(&sub, S, pos,len) 初始条件:串S存在,1<=p0s<=S的长度,0<=1en<=S的长度pos+1。 操作结果:用Sub返回串S的第pos个字符起长度为len的子串
基本操作的功能说明2 StrLength(S) • 初始条件: 字符串S已经存在。 • 操作结果: 返回串S元素个数,称为串的长度。 ClearString(&S) • 初始条件: 字符串S已经存在。 • 操作结果: 将串S清为空串。 Concat(&T,S1,S2) • 初始条件: 字符串S1,S2已经存在。 • 操作结果: 用T返回由串S1和S2联结而成的新串。 Substring(&Sub,S,pos,len) • 初始条件: 串S存在,1<=pos<=S的长度,0<=len<=S的长度-pos+1。 • 操作结果: 用Sub返回串S的第pos个字符起长度为len的子串
基本操作的功能说明3 Index(s,,pos) 初始条件:串S和T存在,T是非空串,1<pos<=S的长度。 操作结果:若主串S中存在和串T相同的子串,则返回它在主串 中第pos个字符之后第一次出现的位置;否则返回0。 Replace(&s,T,v) 初始条件:字符串S,T,V已经存在,T是非空串。 操作结果:用V替换主串S中出现的所有与T相等的不重叠的子串 StrInsert(&s,pos, T) 初始条件:字符串S,T存在,1<pos<=S的长度+1 操作结果:在串S的第pos个字符之前插入串T。 StrDelete(&s, pos, len) 初始条件:串S存在,1<=pos<=S的长度-1en+1 操作结果:从串S中删除第pos个字符起长度为len的子串 DestroyString(&S):把存在的串S销毁
基本操作的功能说明3 Index(S,T,pos) • 初始条件: 串S和T存在,T是非空串,1<=pos<=S的长度。 • 操作结果: 若主串S中存在和串T相同的子串,则返回它在主串 S中第pos个字符之后第一次出现的位置;否则返回0。 Replace(&S,T,V) • 初始条件: 字符串S,T,V已经存在,T是非空串。 • 操作结果: 用V替换主串S中出现的所有与T相等的不重叠的子串。 StrInsert(&S,pos,T) • 初始条件: 字符串S,T存在,1<=pos<=S的长度+1。 • 操作结果: 在串S的第pos个字符之前插入串T。 StrDelete(&S,pos,len) • 初始条件: 串S存在,1<=pos<=S的长度-len+1。 • 操作结果: 从串S中删除第pos个字符起长度为len的子串。 DestroyString(&S): 把存在的串S销毁
串类型的最小操作子集 上述13种基本操作中,下面5种操作构成最小操作子集: 串赋值 StrAssign; 串比较 StrCompare; int Index(String S, String T,, int pos) 球Smgh i int i,n, m; String sub if(pos>03 n=StrEngth(S) 求子串 Substring m= StrEngth -pos, 其它操作可以用其实现| while(i=nm+1 例如定位函数 SubString(sub,s, i, m) ndex(s, T, pos) f( StrCompare(sub, T)=0)++i; else return 的算法如右 //while return 0; }∥ndex
串类型的最小操作子集 上述13种基本操作中,下面5种操作构成最小操作子集: • 串赋值 StrAssign; • 串比较 StrCompare; • 求串长 StrLength; • 串联结 Concat; • 求子串 Substring; 其它操作可以用其实现 例如定位函数 Index(S,T,pos) 的算法如右: int Index(String S, String T, int pos) { int i,n,m; String sub; if(pos > 0){ n = StrLength(S); m = StrLength(T); i = pos; while(i<=n-m+1){ SubString(sub,S,i,m); if(StrCompare(sub,T)!=0)++i; else return i; } //while } // if return 0; } // Index
4.2串的表示和实现(一) 4.2.1定长顺序存储表示 用一组连续的存储单元存储串值的字符序列 在C语言中,用字符“\0”表示串的终结,“\0”不计入串长 另一种方法是定长数组表示一个串 define MAXStRLEn255/串的长度最大为255 ypedef unsigned char SString[MAXSTRLEN+1 ∥0号单元存放串的长度,其最大值刚好是255 当超出255个字符时,串的多余内容被舍去,叫做“截断” 以下用串联结和求子串为例介绍这种存储
4.2 串的表示和实现(一) 4.2.1 定长顺序存储表示 用一组连续的存储单元存储串值的字符序列. 在C语言中,用字符“\0”表示串的终结, “\0”不计入串长. 另一种方法是定长数组表示一个串: #define MAXSTRLEN 255 // 串的长度最大为255 typedef unsigned char SString[MAXSTRLEN+1]; // 0号单元存放串的长度, 其最大值刚好是255. 当超出255个字符时,串的多余内容被舍去,叫做“截断” 以下用串联结和求子串为例介绍这种存储