问答题 利用串的基本运算,编写一个算法,删除串s1中所有的s2子串。
【正确答案】本题利用index()函数和删除子串的函数循环来实现。其程序如下: void delall(Str *s1,Str *s2) { int n; n=index(s1,s2); while(n>=0) { del(s1,n,length(s2)); n=index(s1,s2); } disp(s1); } 其中del函数实现如下: int del(Str *s,int pos,int n) //从串s中删除从位置pos开始的n个字符构成的子串 { int i; if(pos+n>s->length) return 0; for(i=pos+n-1;i<s->length;++i) s->ch[i-n]=s->ch[i]; s->length=s->length-n; s->ch[s->length]='/0'; return 1; }
【答案解析】