填空题

函数 fun 从头至尾扫描字符串 s,删除与字符串 t 相同的所有子串。先从 s 的 第 1 个字符开始查找子串 t,若找到则将后面的字符向前移动,然后继续查找; 否则从 s 的第 2 个字符开始,依此类推,重复该过程至 s 结尾。

typedef struct { char *ch; int len; }SString;//串的首地址和长度

void fun(SString *s,SString t) //i 为 s 的下标,j 为 t 的下标

{      int i=0,j;

       if(s->len<1||t.len<1||s-len<t.len) return;

       while(1)

        { j=____①____ ;

           while(ilen&&j<t.len)//在串 s 中查找与 t 相同的子串

            { if(s->ch[i]==t.ch[j]) { i++; j++;}

             else{ i= ____②____ ; j=0;}

       }   

       if(____③____ ) break; //串 s 中不存在子串 t

       i= ____④____ ;

       for(k=i+t.len;klen;k++) s->ch[k-t.len]=s->ch[k];

       s->len= ____⑤____;

   }

}

  • 1、
【正确答案】 1、

①0;②i-j+1;③j<t,len;④i-j;⑤s.len-t.len

    
【答案解析】