用c语言实现顺序表的插入看不出来哪里错了,求指点!


#include<stdio.h>
#define MAXSIZE 1000
typedef int elem;
/*定义线性表 */
typedef struct
{
    int elem[1000];
    int last;
}SeqList;
/*创建空表*/
void InitList(SeqList *Lp)
{
    Lp->last=-1;
}
/*输入递增有序顺序表 */
void PutseqList(SeqList *Lp,int n)
{
    int i;
    for(i=0;i<n;i++)
        scanf("%d", &(Lp->elem[i]));
    Lp->last=Lp->last+n;
}
/*求表长 */
int LengthList(SeqList *Lp) 
{
    int Len;
    Len=Lp->last+1;
}
/*判断插入位置*/
int PositionList(SeqList *Lp, int X) 
{
    int i;
    for(i=0;i<=Lp->last;i++)
        if(X<Lp->elem[i])
        return i+1;
    return(Lp->last+2);
}
/*插入*/
int InsertList(SeqList *Lp,int i,int x)
{
    int j;
    if(Lp->last==MAXSIZE-1)
    {
        printf("表满");
        return(-1);
         
    }
    if(i<1||Lp->last+2)
    {
        printf("位置错");
        return(0); 
    }
    for(j=Lp->last;j>=i-1;j--)
        Lp->elem[j+1]=Lp->elem[j];
    Lp->elem[i-1]=x;
    Lp->last++;
    return(1);
}
/*输出元素 */
int OutputSeqList(SeqList *Lp)
{
    int i;
    printf("输出结果为:");
    for(i=0;i<=Lp->last;i++)
        printf("%d",Lp->elem[i]);
        return(Lp->elem[i]);
}
int main()
{
    int s,c;
    SeqList L;
    InitList(&L);
    printf("请输入顺序表的长度:");
    scanf("%d",&s);
    printf("请输入递增顺序表:");
    PutseqList(&L,s);
    LengthList(&L);
    printf("表长为%d\n",LengthList(&L));
    printf("请输入要插入的元素:");
    scanf("%d",&c);
    InsertList(&L,PositionList(&L,c),c);
    OutputSeqList(&L);
    printf("\n"); 
}

我估计是判断位置和插入那里有错,但我看不出来,谢谢!

if(i<1||Lp->last+2)
改为
if(i<1||i>Lp->last+2)

代码没什么大问题,求表长函数缺返回值:

/*求表长 */
int LengthList(SeqList* Lp)
{
    int Len;
    Len = Lp->last + 1;
    return Len;          //函数缺返回值
}