资源描述:
《严蔚敏+数据结构题集c语言版答桉第四章+串》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第四章串4.10voidString_Reverse(Stringtypes,Stringtype&r)//求s的逆串r{ StrAssign(r,'');//初始化r为空串 for(i=Strlen(s);i;i--) { StrAssign(c,SubString(s,i,1)); StrAssign(r,Concat(r,c));//把s的字符从后往前添加到r中 }}//String_Reverse4.11voidString_Subtract(Stringtypes,Str
2、ingtypet,Stringtype&r)//求所有包含在串s中而t中没有的字符构成的新串r{ StrAssign(r,''); for(i=1;i<=Strlen(s);i++) { StrAssign(c,SubString(s,i,1)); for(j=1;j
3、are(c,SubString(t,k,1));k++);//判断当前字符是否包含在t中 if(k>Strlen(t))StrAssign(r,Concat(r,c)); } }//for}//String_Subtract4.12intReplace(Stringtype&S,StringtypeT,StringtypeV);//将串S中所有子串T替换为V,并返回置换次数{ for(n=0,i=1;i<=Strlen(S)-Strlen(T)+1;i++)//注意i的取值范围
4、 if(!StrCompare(SubString(S,i,Strlen(T)),T))//找到了与T匹配的子串 {//分别把T的前面和后面部分保存为head和tail StrAssign(head,SubString(S,1,i-1)); StrAssign(tail,SubString(S,i+Strlen(T),Strlen(S)-i-Strlen(T)+1)); StrAssign(S,Concat(head,V)); StrAssign(S,C
5、oncat(S,tail));//把head,V,tail连接为新串 i+=Strlen(V);//当前指针跳到插入串以后 n++; }//if returnn;}//Replace分析:i+=Strlen(V);这一句是必需的,也是容易忽略的.如省掉这一句,则在某些情况下,会引起不希望的后果,虽然在大多数情况下没有影响.请思考:设S='place',T='ace',V='face',则省掉i+=Strlen(V);运行时会出现什么结果?4.13intDelete_SubS
6、tring(Stringtype&s,Stringtypet)//从串s中删除所有与t相同的子串,并返回删除次数{ for(n=0,i=1;i<=Strlen(s)-Strlen(t)+1;i++) if(!StrCompare(SubString(s,i,Strlen(t)),t)) { StrAssign(head,SubString(S,1,i-1)); StrAssign(tail,SubString(S,i+Strlen(t),Strlen(s)-i-Str
7、len(t)+1)); StrAssign(S,Concat(head,tail));//把head,tail连接为新串 n++; }//if returnn,}//Delete_SubString4.14StatusNiBoLan_to_BoLan(Stringtypestr,Stringtype&new)//把前缀表达式str转换为后缀式new{ Initstack(s);//s的元素为Stringtype类型 for(i=1;i<=Strlen(str);i++)
8、 { r=SubString(str,i,1); if(r为字母)push(s,r); else { if(StackEmpty(s))returnERROR; pop(s,a); if(StackEmpty(s))returnERROR; pop(s,b); StrAssign(t,Concat(r,b)); StrAssign(c,Concat(t,a));//把算