閱讀以下說明和C函數(shù),將解答填入答題紙的對應(yīng)欄內(nèi)。
【說明】
函數(shù)del_substr(S,T)的功能是從頭至尾掃描字符串S,刪除其中與字符串T相同的所有子串,其處理過程為:首先從串S的第一個字符開始查找子串T,若找到,則將后面的字符向前移動將子串T覆蓋掉,然后繼續(xù)查找子串T,否則從串S的第二個字符開始查找,依此類推,重復(fù)該過程,直到串S的結(jié)尾為止。該函數(shù)中字符串的存儲類型SString定義如下:
typedef struct{
char *ch; /*串空間的首地址*/
int length; /*串長*/
}SString;
【C函數(shù)】
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值回退,為繼續(xù)查找T做準備 */
}
}
if( (2) ){ /* 在S中找到與T相同的子串 */
i= (3) ; /* 計算S中子串T的起始下標 */
for(k=i+T.length; k<S->length; k++) /* 通過覆蓋子串T進行刪除 */
S->ch[ (4) ]=S->ch[k];
S->length= (5) ; /* 更新S的長度*/
}
else break; /* 串S中不存在子串T */
}
}