主题:串的插入中位置移动的范围疑惑
Status StrInsert(HString &S, int pos, HString T) {
// 1≤pos≤StrLength(S)+1。在串S的第pos个字符之前插入串T。
int i;
if (pos < 1 || pos > S.length+1) // pos不合法
return ERROR;
if (T.length) { // T非空,则重新分配空间,插入T
if (!(S.ch = (char *)realloc(S.ch,(S.length+T.length+1)
*sizeof(char))))
return ERROR;
for (i=S.length-1; i>=pos-1; --i) // 为插入T而腾出位置
S.ch[i+T.length] = S.ch[i];
for (i=1; i<=T.length; i++) // 插入T
S.ch[pos-1+i] = T.ch[i];
S.length += T.length;
}
return OK;
} // StrInsert
for (i=S.length-1; i>=pos-1; --i) // 为插入T而腾出位置
我认为这句应该改为
for (i=S.length; i>=pos; --i)
移动的串应该从 被插入的位置开始到串末 而不是从被插入位置之前一个字符开始 你们说呢?
// 1≤pos≤StrLength(S)+1。在串S的第pos个字符之前插入串T。
int i;
if (pos < 1 || pos > S.length+1) // pos不合法
return ERROR;
if (T.length) { // T非空,则重新分配空间,插入T
if (!(S.ch = (char *)realloc(S.ch,(S.length+T.length+1)
*sizeof(char))))
return ERROR;
for (i=S.length-1; i>=pos-1; --i) // 为插入T而腾出位置
S.ch[i+T.length] = S.ch[i];
for (i=1; i<=T.length; i++) // 插入T
S.ch[pos-1+i] = T.ch[i];
S.length += T.length;
}
return OK;
} // StrInsert
for (i=S.length-1; i>=pos-1; --i) // 为插入T而腾出位置
我认为这句应该改为
for (i=S.length; i>=pos; --i)
移动的串应该从 被插入的位置开始到串末 而不是从被插入位置之前一个字符开始 你们说呢?