void replace(String&s, String T, String v) n=StrEngth(s); m=StrEngth(T); pos =1; StrAssign(news, NullStr) ∥初始化news串为空串 while( pos < n-m+1&&1) i=ndex(S,Tpos);∥从pos指示位置起查找串T f(i!=0){ SubString(sub,S,pos,i-pos);∥不置换子串 Concat(news,news,sub);∥联接S串中不被置换部分 Concat(news, news, v); ∥联接V串 pos =l+m; ∥lpos移至继续查询的起始位置 SubString(sub,S,pos,n-pos+1);∥剩余串 Concat(s,news,sub);∥联接剩余子串并将新的串赋给S 34-1-2replace swf
• void replace(String& S, String T, String V) { n=StrLength(S); m=StrLength(T); pos = 1; StrAssign(news, NullStr); // 初始化 news 串为空串 i=1; while ( pos <= n-m+1 && i ) { i=Index(S, T, pos); // 从pos指示位置起查找串T if (i!=0) { SubString(sub, S, pos, i-pos); // 不置换子串 Concat(news, news, sub); // 联接S串中不被置换部分 Concat(news,news, V); // 联接V串 pos = i+m; // pos 移至继续查询的起始位置 } } SubString(sub, S, pos, n-pos+1); // 剩余串 Concat( S, news, sub ); // 联接剩余子串并将新的串赋给S } 4-1-2replace.swf
第二节串的表示和实现 串的定长顺序存储表示 用一组地址连续的存储单元存储串值的字 符序列 defin maXstrlen 255 Typedef unsigned char SString MAXSTRLENT
第二节 串的表示和实现 串的定长顺序存储表示 • 用一组地址连续的存储单元存储串值的字 符序列 • #defin MAXSTRLEN 255 • Typedef unsigned char SString[MAXSTRLEN]
void Concat( char S1[l, char S2[l, char T[]) ∥以T返回由S1和S2联接而成的新串 0:k=0 ∥Whe(S1!=0)Tk+=S1++; 复制串S1 j=0 while(S2[]!=v0)Tk++]=S2[++]; ∥紧接着复制串S2 TkK=10 ∥置结果申T的结束标志
• void Concat( char S1[ ], char S2[ ], char T[ ]) { // 以T返回由S1和S2联接而成的新串 j=0; k=0; while ( S1[j] != '\0') T[k++] = S1[j++]; // 复制串 S1 j = 0; while ( S2[j] != '\0') T[k++] = S2[j++]; // 紧接着复制串 S2 T[k] = '\0'; // 置结果串T的结束标志 }