Display函数的输出

#为什么DisPlay函数无法输出内容?
代码如下

#include "stdio.h"
#define  MAXSIZE 100
#define  ERROR 0
#define  OK 1
typedef int ElemType;

typedef struct
{
    ElemType elem[MAXSIZE];//静态申请 
    int last;
}SepList;

void InitLength(SepList *L)//将L初始化为空表 
{
    L->last=-1;
}

void Visit(SepList *L)//访问顺序表 
{
    int i;
    if (L->last==-1) printf("Empty.\n");
    else 
        for(i=0;i<=L->last;i++)
        {
            printf("%d ",L->elem[i]);
        }
    printf("\n");    
}

int InsList(SepList *L,int i,ElemType e)//顺序表的插入运算 
{
    int k;
    if((i<1)||(i>L->last+2))//在顺序表L中第i个数据元素之前插入一个元素e。i的合法取值范围是1≤i≤L->last+2。 
    {
        printf("插入位置i值不合法");
        return (ERROR);
    }
    if(L->last>=MAXSIZE-1)
    {
        printf("表已满,无法插入");
        return (ERROR);
    }
    for(k=L->last;k>=i-1;k--)
    {
        L->elem[k+1]=L->elem[k];
        L->elem[i-1]=e;
        L->last++;
        return (OK);
    }
}

int DelList(SepList *L,int i,ElemType *e)//顺序表的删除运算 
{                                        //在顺序表中删除第i个数据元素,并用指针参数e返回其值 
    int k;
    if((i<1)||(i>L->last+1))
    {
        printf("删除位置不合法!");
        return (ERROR); 
    }
    *e=L->elem[i-1];
    for(k=i;k<=L->last;k++)
        L->elem[k-1]=L->elem[k];//将后面的元素依次前移 
    L->last--;
    return (OK);    
}

void mergeList(SepList *LA,SepList *LB,SepList *LC)//线性表的合并运算 
{
    int i,j,k,l;
    i=0;j=0;k=0;
    while(i<=LA->last&&j<=LB->last)
    if(LA->elem[i]<=LB->elem[j])
        {
            LC->elem[k]=LA->elem[i];
            i++;
            k++;
        }
    else
        {
            LC->elem[k]=LB->elem[j];
            j++;
            k++;
        }
    while(i<=LA->last)//当表A有剩余元素时,则将表LA余下的元素赋值给表LC
    {
        LC->elem[k]=LA->elem[i];
        i++;
        k++;
    } 
    while(i<=LB->last)//同理 
    {
        LC->elem[k]=LB->elem[j];
        j++;
        k++;
    }
    LC->last=LA->last+LB->last;
}

int ListLength(SepList *L)//求线性表的长度 
{
    return L->last+1;
}

int TransList(SepList *L)//线性表的逆置 
{
    int i=0;
    int temp;
    for(i=0;i<(L->last+1)/2;i++)
    {
        temp=L->elem[i];
        L->elem[i]=L->elem[L->last-i];
        L->elem[L->last-i]=temp;
    }
    return (OK);
}

void SortList(SepList *L)//将线性表的值按从小到大排列 
{
    int i,j,temp,max;
    for(i=0;ilast;i++)
    {
        max=i;
        for(j=i;jlast+1;j++)
        {
            if(L->elem[max]>L->elem[j])
                max=j;
        }
        temp=L->elem[i];
        L->elem[i]=L->elem[max];
        L->elem[max]=temp;
    }
}

int DisPlay(SepList *L)//输出线性表中的元素 
{
    int i;
    printf("顺序表中的元素为:");
    for(i=0;ilast+1;i++)
    {
        printf("%d\n",L->elem[i]);    
    }
        printf("\n");
        return (OK);
}

int main()
{
    SepList L1,L2,L3;
    InitLength(&L1);InitLength(&L2);InitLength(&L3);
    int choose,n1,n2,i;
    int *e;
    for(i=0;i<10;i++)
    { 
        printf("***********************************\n");
        printf("*              菜单               *\n");
        printf("*    1:插入          2:删除       *\n"); 
        printf("*    3:非递减排列    4:逆置       *\n");
        printf("*    5:求表长        6:合并       *\n");
        printf("*    7:访问表        8:删除       *\n");
        printf("*    9:输出表                     *\n");
        printf("***********************************\n");
        printf("输入想要进行操作的序号:"); 
        scanf("%d",&choose);
    
        if(choose==1)
        {
            printf("请输入想在L1表中插入元素的个数:");
            scanf("%d",&n1);
            printf("请依次输入L1表中要存储的元素:");
            for(i=1;i<=n1;i++)
            {
                scanf("%d",&L1.elem[i]);
                InsList(&L1,1,L1.elem[i]);
            }
            DisPlay(&L1);
            printf("请输入想在L2表中插入元素的个数:");
            scanf("%d",&n2);
            printf("请依次输入L2表中要存储的元素:");
            for(i=1;i<=n2;i++)
            {
                scanf("%d",&L2.elem[i]);
                InsList(&L2,1,L2.elem[i]);
            }
            DisPlay(&L2);        
        }
        if(choose==2)
        {
            printf("请输入想在L1表中删除的元素的个数:");
            scanf("%d",&n1);
            printf("请依次输入L1表中删除元素的下标:");
            for(i=0;i<=n1;i++)
            {
                scanf("%d",&i);
                DelList(&L1,i,e);    
            } 
            printf("请输入想在L2表中删除的元素的个数:");
            scanf("%d",&n2);
            printf("请依次输入L2表中删除元素的下标:");
            for(i=0;i<=n2;i++)
            {
                scanf("%d",&i);
                DelList(&L2,i,e);    
            } 
        }
        if(choose==3)
        {
            SortList(&L1);
            SortList(&L2);
        }
    }
}


int InsList(SepList *L,int i,ElemType e)//顺序表的插入运算 
{
    int k;
    if((i<1)||(i>L->last+2))//在顺序表L中第i个数据元素之前插入一个元素e。i的合法取值范围是1≤i≤L->last+2。 
    {
        printf("插入位置i值不合法");
        return (ERROR);
    }
    if(L->last>=MAXSIZE-1)
    {
        printf("表已满,无法插入");
        return (ERROR);
    }
for(k=L->last;k>=i-1;k--)
    {
    L->elem[k+1]=L->elem[k];
      
    }
    L->elem[i-1]=e;
    L->last++;
    return (OK);
}