回 帖 发 新 帖 刷新版面

主题:串的插入中位置移动的范围疑惑

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个回复)

沙发

很明显,这个函数,串的起始是0~length-1,而pos是从1~length

我来回复

您尚未登录,请登录后再回复。点此登录或注册