在串的定长顺序存储结构下,完成下列算法,实现从串S中删除第pos个字符起长度为len的子串。请空白处填写缺失的代码。详细解释为什么这么填空 /* 初始条件: 串S存在,1≤pos≤StrLength(S)-len+1 */ typedef char String[MAXSIZE+1]; Status StrDelete(String S,int pos,int len) { int i; if(pos<1||pos>S[0]-len+1||len<0) return ERROR; for(i=pos+len;i<=S[0];i++) 1 ; S[0]-= 2 ; return OK; }
时间: 2024-04-01 10:38:08 浏览: 53
数据结构-基本算法-串定长顺序存储
/* 初始条件: 串S存在,1≤pos≤StrLength(S)-len+1 */
typedef char String[MAXSIZE+1];
Status StrDelete(String S, int pos, int len)
{
int i;
if (pos < 1 || pos > S[0] - len + 1 || len < 0)
return ERROR;
for (i = pos + len; i <= S[0]; i++) // 将pos+len后面的字符往前移len个位置
S[i - len] = S[i];
S[0] -= len; // 更新串长
return OK;
}
在该算法中,需要将pos+len后面的字符往前移len个位置,以完成删除子串的操作。因此,需要在空白处填写代码" S[i - len] = S[i]; "。这段代码的作用是将第i个字符移动到i-len的位置上,以实现删除操作。同时,需要将S[0]减去len,以更新串长。
阅读全文