试题四(共 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 k length k++) /* 通过覆盖子串T进行删除 */ S->ch[ (4) ] = S->ch[k] S->length = (5) /* 更新S的长度 */ } else break /* 串S中不存在子串T*/ } }