关于线性表(顺序表)插入的一个小小问题
											 程序代码:
程序代码:Status ListInsert_Sq(SqList &sqlist, int i, ElemType e)
{
    int *newbase;
    if(!(sqlist)||i<0||i>sqlist.length+1) return ERROR;
    if(sqlist.length>=sqlist.listsize)
    {
        newbase=(ElemType*)realloc(sqlist.elem,(sqlist.listsize+LISTINCREMENT)*sizeof(ElemType));
        if(!newbase)
            exit(OVERFLOW);
        sqlist.elem=newbase;
        sqlist.listsize+=LISTINCREMENT;
    }//if
    for(int j=sqlist.elem[sqlist.length-1]; j>=sqlist.elem[i-1]; j--)
        sqlist.elem[j+1]=sqlist.elem[j];
   
    sqlist.elem[j]=e;
    sqlist.length+=1;
    return OK;
}//ListInsert_Sq补充:typedef int Status;
typedef int ElemType;
typedef struct
{
ElemType *elem;
int length, listsize;
}SqList;
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define OK 1
#define OVERFLOW -2
这是教材上的算法转化成的C语言编码,我只是想不明白为什么要有第二个if判断。
理由如下:
sqlist的成员中,listsize恒>=length,其中length初始化为0,只有在添加数据或插入数据时会增大。而添加或插入数据等操作是在listsize满足条件时才进行的,这些操作完成后length才会增大(或减小),即length必定不会大于listsize。
我想问:有没有情况使得length>listsize?

 
											





 
	    

 
										
					
	
