顺序储存线性表错误,功能运行不了

#include
#include
#include
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct {
int elem;
int length;
int listsize;
}SqList;
//初始化
int InitList_Sq(SqList &L)
{
L.elem = (int
)malloc(LIST_INIT_SIZE * sizeof(int));
if (!L.elem)
exit(0);
L.length = 0;
L.listsize = LIST_INIT_SIZE;
return 1;
}
//查找
int LocateElem(SqList L, int x)
{
int i = 0;
while (i <= L.length - 1 && L.elem[i] != x)
i++;
if (i <= L.length)
return i;
else
return 0;
}
//插入
int ListInsert_Sq(SqList &L, int i, int e)
{
int *q, *p;
if (iL.length)
return 0;
if (L.length>L.listsize)
return 0;
q = &(L.elem[i - 1]);
for (p = &(L.elem[L.length - 1]); p >= q; --p)
*(p + 1) = *p;
*q = e;
++L.length;
return 1;
}

//删除
int ListDelete_Sq(SqList &L, int i, int &e)
{
int *p, *q;
if (iL.length)
return 0;
p = &(L.elem[i - 1]);
e = *p;
q = L.elem + L.length - 1;
for (++p; p <= q; ++p)
*(q - 1) = *q;
--L.length;
return 1;
}
void Out(SqList *L)
{
int i;
for (i = 0; i< L->length; i++)
printf("%d", L->elem[i]);
printf("\n");

}

void main()
{
SqList L;
int i, r;
InitList_Sq(L);
while (1)
{
printf("输入元素,输入0结束插入操作:");
scanf("%d", &r);
if (r== 0)
break;
printf("插入位置:");
scanf("%d", &i);
ListInsert_Sq(L, i,r);
printf("线性表为:");
Out(&L);
}
while (1)
{
printf("输入查找元素,输入0结束查找操作:");
scanf("%d", &i);
if (i == 0)
break;
r = LocateElem(L, i);
if (r == i)
printf("位置为:%d", r + 1);
else
printf("没有");
Out(&L);
}

}
图片说明

请问是遍历的问题还是插入函数的问题。求教求教

鬼知道你什么错误。自己的错误自己调试,或者花钱请人帮你调试。天天都有人问这种类似的问题,然而帮了张三,对李四也没用。
如果你只是糊弄个作业,网上有现成的可以参考。