主题:各位帮我看看 这个算法那里有错?
[b]题目:[/b]
编写算法,从串s中删除所有和串t相同的子串。
要求实现以下函数:
Status DelSub(SString &s, SString t);
/* 从串s中删除所有和串t匹配的子串。 */
/* 若有与t匹配的子串被删除,则返回TRUE;*/
/* 否则返回FALSE */
定长顺序串SString的类型定义:
typedef unsigned char SString[MAXSTRLEN+1];
/* s[0] is the string's length */
[b]我的代码:[/b]
int StrCompare(SString s, SString t)
{ int i;
for(i=1;i<=s[0];i++)
if(s[i]!=t[i]) return s[i]-t[i];
return s[0]-t[0];}
Status DelSub(SString &s, SString t)
/* 从串s中删除所有和串t匹配的子串。 */
/* 若有与t匹配的子串被删除,则返回TRUE;*/
/* 否则返回FALSE */
{ int i=1,n=0,j,k;
SString sub;
while(i<=s[0]-t[0]+1)
{for(j=1;j<=t[0];j++)
sub[j]=s[i+j-1];
sub[0]=t[0];
if(StrCompare(sub,t)==0)
{for(k=0;k<=s[0]-t[0]-i;k++)
s[i+k]=s[i+t[0]+k];
s[0]=s[0]-t[0];
i=i+t[0]; n++;
}
else i++;
}
if(n==0)
return FALSE;
else
return TRUE;
}
编译时没有问题的 关键是运行 请各位指点!!
编写算法,从串s中删除所有和串t相同的子串。
要求实现以下函数:
Status DelSub(SString &s, SString t);
/* 从串s中删除所有和串t匹配的子串。 */
/* 若有与t匹配的子串被删除,则返回TRUE;*/
/* 否则返回FALSE */
定长顺序串SString的类型定义:
typedef unsigned char SString[MAXSTRLEN+1];
/* s[0] is the string's length */
[b]我的代码:[/b]
int StrCompare(SString s, SString t)
{ int i;
for(i=1;i<=s[0];i++)
if(s[i]!=t[i]) return s[i]-t[i];
return s[0]-t[0];}
Status DelSub(SString &s, SString t)
/* 从串s中删除所有和串t匹配的子串。 */
/* 若有与t匹配的子串被删除,则返回TRUE;*/
/* 否则返回FALSE */
{ int i=1,n=0,j,k;
SString sub;
while(i<=s[0]-t[0]+1)
{for(j=1;j<=t[0];j++)
sub[j]=s[i+j-1];
sub[0]=t[0];
if(StrCompare(sub,t)==0)
{for(k=0;k<=s[0]-t[0]-i;k++)
s[i+k]=s[i+t[0]+k];
s[0]=s[0]-t[0];
i=i+t[0]; n++;
}
else i++;
}
if(n==0)
return FALSE;
else
return TRUE;
}
编译时没有问题的 关键是运行 请各位指点!!