
数据结构(c语言)一个关于串的算法
StatusReplace(SString&s,SStringt,SStringv)/*用串v替换串s中所有和串t匹配的子串。*//*若有与t匹配的子串被替换,则返回TR...
Status Replace(SString& s, SString t, SString v)
/* 用串v替换串s中所有和串t匹配的子串。 */
/* 若有与t匹配的子串被替换,则返回TRUE;*/
/* 否则返回FALSE */
{
int i,j,k=1,n=0;
SString w;
for(i=1;i<=s[0];)
{
for(j=1;j<=t[0];j++)
if(i+j-1>s[0]||s[i+j-1]!=t[j]) break;
if(j==t[0]+1)
{
i=i+j-1;
n=1;
for(j=1;j<=v[0];j++,k++)
w[k]=v[j];
}
else
w[k++]=s[i];
i++;
}
for(i=1;i<=w[0];i++)
s[i]=w[i];
s[0]=i+1;
if(n) return TRUE;
else return FALSE;
}
自己无论怎么检查都没发现错误,麻烦帮我找出哪里出错了,谢谢! 展开
/* 用串v替换串s中所有和串t匹配的子串。 */
/* 若有与t匹配的子串被替换,则返回TRUE;*/
/* 否则返回FALSE */
{
int i,j,k=1,n=0;
SString w;
for(i=1;i<=s[0];)
{
for(j=1;j<=t[0];j++)
if(i+j-1>s[0]||s[i+j-1]!=t[j]) break;
if(j==t[0]+1)
{
i=i+j-1;
n=1;
for(j=1;j<=v[0];j++,k++)
w[k]=v[j];
}
else
w[k++]=s[i];
i++;
}
for(i=1;i<=w[0];i++)
s[i]=w[i];
s[0]=i+1;
if(n) return TRUE;
else return FALSE;
}
自己无论怎么检查都没发现错误,麻烦帮我找出哪里出错了,谢谢! 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询