int listinsert(sqlist* L,int i,datatype e)
{
int *newbase,*p,*q;
if (i<1 || i>L->length+1)
{
return ERROR;
}
if (L->length>=L->listsize)
{
newbase=(datatype *) realloc (L->data,(L->listsize+LISTINCREMENT)*sizeof(datatype));
if (!newbase)
{
exit(OVERFLOW); /* 存储分配失败 */
}
L->data = newbase; /* 新基址 */
L->listsize += LISTINCREMENT; /* 增加存储容量 */
}
q = L->data+i-1; /* q为插入位置 */
for (p=L->data+L->length-1; p>=q; --p)
{
*(p+1) = *p; /* 从最后元素到位置i间所有元素顺次后移 */
}
*q=e; /* 插入e */
++L->length; /* 表长增1 */
return OK;
}
在进行顺序表的创建时,这个是创建
void createlist(sqlist* L,int m)
{
int i;
datatype e;
printf("\t输入各元素: ");
for(i=1; i<=m; ++i)
{
scanf("%d",&e); /* 依次输入线性表中的元素 */
listinsert(L,i,e); /* 按顺序插入元素 */
}
printf("\n");
}
在进行插入操作调用listinsert的时候,是这样的listinsert(&L,i,e);
但是,这上面这个操作里面却是
listinsert(L,i,e); /* 按顺序插入元素 */
也就是说L前面是没有&的,我想问一下这是为什么?