4.10③ 编写对串求逆的递推算法。
要求实现以下函数:
void Reverse(StringType &s);
/* Reverse s by iteration. */
StringType 是串的一个抽象数据类型,它包含以下 6 种基本操作:
void InitStr(StringType &s);
// 初始化 s 为空串。
void StrAssign(StringType &t, StringType s);
// 将 s 的值赋给 t。s 的实际参数是串变量。
int StrCompare(StringType s, StringType t);
// 比较 s 和 t。若 s>t,返回值>0;若 s=t,返回值=0;若 s<t,返回值<0。
int StrLength(StringType s);
// 返回 s 中的元素个数,即该串的长度。
StringType Concat(StringType &s, StringType t);
// 返回由 s 和 t 联接而成的新串。
StringType SubString(StringType s, int start, int len);
// 当 1<=start<=StrLength(s)且 0<=len<=StrLength(s)- start+1 时,
// 返回 s 中第 start 个字符起长度为 len 的子串,否则返回空串。
// 注意,不要使用 " s = " 的形式为 StringType 类型的变量赋值 ,
// 而要使用 StrAssign 函数!!!
void Reverse(StringType &s)
/* Reverse s by iteration. */
{
StringType t;
int n,i;
n=StrLength(s);
InitStr(t);
for(i=n;i>0;i--)
{
Concat(t,SubString(s,i,1));
}
StrAssign(s,t);
}
4.12③ 编写一个实现串的置换操作 Replace(&S,T,V)的算法。
要求实现以下函数:
void Replace(StringType &S, StringType T, StringType V);
/* 以串 v 置换串 s 中出现的所有和串 t 相同的非空串 */