关于《大话数据结构》中源代码的问题

最近在看《大话数据结构》,下载了源代码一边看书一边敲,发现一些代码看不懂,觉得有问题

 /*  初始条件: 串S和T存在,1≤pos≤StrLength(S)+1 */
/*  操作结果: 在串S的第pos个字符之前插入串T。完全插入返回TRUE,部分插入返回FALSE */
Status StrInsert(String S,int pos,String T)
{ 
    int i;
    if(pos<1||pos>S[0]+1)
        return ERROR;
    if(S[0]+T[0]<=MAXSIZE)
    { /*  完全插入 */
        for(i=S[0];i>=pos;i--)
            S[i+T[0]]=S[i];
        for(i=pos;i<pos+T[0];i++)
            S[i]=T[i-pos+1];
        S[0]=S[0]+T[0];
        return TRUE;
    }
    else
    { /*  部分插入 */
        for(i=MAXSIZE;i<=pos;i--)
            S[i]=S[i-T[0]];
        for(i=pos;i<pos+T[0];i++)
            S[i]=T[i-pos+1];
        S[0]=MAXSIZE;
        return FALSE;
    }
}

部分插入里第一个循环的判断条件i<=pos有问题吧,是不是应该写成i>=pos+T[0]?
各位大神帮忙看下?

2个回答

i<=pos的确有问题,一旦循环条件满足,又是自减,那么肯定死循环。

自减循环那里确实有问题,你的想法是对的,学习到批判精神很好,我在学习过程遇到书本也是有一些问题的,不能过于相信所谓的权威,只有自己实践之后的答案才能相信

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐