列表

详情


(共15分)
    阅读以下说明和C函数,将解答填入答题纸的对应栏内。
【说明】
    函数del_substr(S,T)的功能是从头至尾扫描字符串S,删除其中与字符串T相同的所有子串,其处理过程为:首先从串S的第一个字符开始查找子串T,若找到,则将后面的字符向前移动将子串T覆盖掉,然后继续查找子串T,否则从串S的第二个字符开始查找,依此类推,重复该过程,直到串S的结尾为止。该函数中字符串的存储类型SString定义如下:
    typedef struct{
    char *ch;     /*串空间的首地址*/
    int length;    /*串长*/
    }SString;
 

【C函数】
    void del substr(SString*S, SString T)
    {
  int i, j;
  if(S->length<1||T.length<1||S->length<T.length)
    return;
  i=0;   /* i为串S中字符的下标 */
  for(;;){
    j=0;   /* j为串T中字符的下标 */
    while(i<S->length&&j<T.length){  /* 在串S中查找与T相同的子串 */
  if(S->ch[i]==T.ch[j]){
  i++; j++;
    }
    else{
    i= (1;  j=0;    /* i值回退,为继续查找T做准备 */
    }
  }
    if( (2){ /* 在S中找到与T相同的子串 */
    i= (3; /* 计算S中子串T的起始下标 */
    for(k=i+T.length; klength; k++) /* 通过覆盖子串T进行删除 */
    S->ch[  (4]=S->ch[k];
    S->length= (5;    /* 更新S的长度*/
  }
    else break;    /* 串S中不存在子串T */
  }
  }

参考答案:

详细解析:

上一题