新人求教线性表有关问题

新人求教线性表问题~这个是插入操作int listinsert(sqlist* L,int i,datatype e){int *newbase,*p,*qif (

新人求教线性表问题~
这个是插入操作
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前面是没有&的,我想问一下这是为什么?
[解决办法]


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); /* 按顺序插入元素 *///这里处于creat函数中,L本身就是指针,当然如此喽。
}
printf("\n");
}