c++求逆串的递归算法
SqString invert(SqString s)
{
SqString s1, s2;
if (StrLength(s) > 0)
{
s1 = invert(SubStr(s, 2, StrLength(s) - 1));
s2 = Concat(s1, SubStr(s, 1, 1));
}
else
return s;
return s2;
}
SubStr返回从串s的a个字符开始连续b个字符组成的新串
StrLength返回串的长度
Concat链接两个串
SqString SubStr(SqString s, int a, int b)//返回从串s的a个字符开始连续b个字符组成的新串
{
int i;
SqString m;
m.length = 0;
if (a <= 0 || a<0 || a>s.length || a + b - 1 > s.length)
return m;
for (i=a-1; i <a+b-1; i++)
{
m.data[i-a+1] = s.data[i];
}
m.length = b;
return m;
}
SqString Concat(SqString s, SqString s1)
{
int i;
SqString m;
m.length = s.length + s1.length;
for (i = 0; i < s.length; i++)
m.data[i] = s.data[i];
for (i = 0; i < s1.length; i++)
{
m.data[s.length+i] = s1.data[i];
}
return m;
}
int StrLength(SqString s)
{
return s.length;
}
主函数测试
int main()
{
SqString pre;
SqString forss;
int nextpre[10];
char prechar[] = { 'a','b','c','d','s','s' };
StrAssign(pre, prechar, sizeof(prechar) / sizeof(prechar[0]));
forss = invert(pre);
DispStr(forss);
system("pause");
}