链表的实现 不知道我哪里错了 一直跳不到函数里

不知道我哪里错了 一直跳不到函数里

#include<iostream>
using namespace std;
#include<stdlib.h>

#define LIST_INIT_SIZE 5
#define LISTINCREMENT  5
typedef struct
{
    int *elem;
    int length;
    int listsize;
}Sqlist;

int InitList(Sqlist &L,int i,int e)//开辟储存空间并且输入线性表值 
{
   L.elem=(int *)malloc(LIST_INIT_SIZE *sizeof(int));
   
   L.listsize=LIST_INIT_SIZE;
   L.length=0;
       L.elem[i]=e;
   
   return 0;    
}
int PrintList(Sqlist &L)//输出线性表的值 
{
    for (int i=1;i<=L.length;i++)
    {
        printf("%d  ",L.elem[i]);
    }
    printf("\n");
    return 0;
}


int main()
{
    Sqlist L1;
    InitList(L1,1,1);
    InitList(L1,2,2);
    InitList(L1,3,3);
    InitList(L1,4,4);
    InitList(L1,5,5);
    PrintList(L1);
    return 0;
}

…………

每次运行 InitList(L1,1,1);

都有由下面这一句重新分配空间,

 L.elem=(int *)malloc(LIST_INIT_SIZE *sizeof(int));

L1变成了全新的L1,这么说你能明白吗