void InsertElem(Sqlist *L, int i, int val) //在顺序表Sqlist的第i个位置上插入元素val
{
int *base, *insertPtr, *p;
if(i<1 || i>length+1)
exit(0); //非法插入
if(L->length >= L->listsize)
{
base = (int *)realloc(L->elem, (L->listsize+10)*sizeof(int)); //重新追加空间
L->elem = base; //更新内存基地址
L->listsize = L->listsize+100; //存储空间增大100单元
}
insertPtr = &(L->elem[i-1]); //insertPtr为插入位置
for( p=&(L->elem[L->length-1]); p>=insertPtr; p-- )
*(p+1) = *p; //将 i-1 以后的元素顺序后移一个元素的位置
*insertPtr = item; //在第i个位置插入元素item
L->length++; //表长+1
}
上面是一个插入元素的函数,length代表顺序表的长度,listsze代表数据表的容量,我要问的是这段
if(L->length >= L->listsize)
{
base = (int *)realloc(L->elem, (L->listsize+10)*sizeof(int)); //重新追加空间
L->elem = base; //更新内存基地址
L->listsize = L->listsize+100; //存储空间增大100单元
}
重新追加了10个sizeof(int)的空间后,容量不是应该加10 了吗?
为什么还要写 L->listsize = L->listsize+100;
length代表顺序表的长度,listsze代表数据表的容量
哪里错了啊,我照着书上打的,