连接两个有序线性表,并存入L中 ,但输不出L的内容

问题遇到的现象和发生背景

连接两个有序线性表,并存入L中 ,但输不出L的内容

问题相关代码,请勿粘贴截图
# include <stdio.h>

# define MaxSize 10

typedef struct      //定义结构体 
{
    int date[MaxSize];
    int length;
}SeqList;

bool merge(SeqList L1, SeqList L2, SeqList &L) //连接两个有序线性表,并存入L中 
{
    if(L1.length + L2.length > MaxSize)
        return false;
    else
    {
        int i = 0, j = 0, k = 0;
        
        while(i<L1.length && j<L2.length)
        {
            if(L1.date[i] <= L2.date[j])
            {
                L.date[k] = L1.date[i];
                k++;
                i++;
            }
            
            else
            {
                L.date[k] = L1.date[j];
                k++;
                j++;
            }
                
        }
        
        while(i<L1.length)
        {
            L.date[k] = L1.date[i];
            k++;
            i++;
        }
        
        while(i<L2.length)
        {
            L.date[k] = L1.date[j];
            k++;
            j++;
        }
        
        L.length = k; 
        
        printf("%d", L.length);
        
        return true;
    }
}

void PrintList(SeqList L)  //输出线性表L 
{
    for(int i=0; i<L.length; i++)
        printf("%3d", L.date[i]);
}

int main(void)
{
    SeqList L1;
    SeqList L2;
    SeqList L;
    
    printf("请输入第一个表的表长:");
        scanf("%d", &L1.length); 
    printf("请输入第一个表的元素:");
        for(int i=0; i<L1.length; i++)
            scanf("%d", &L1.date[i]);
    
    printf("请输入第二个表的表长:");
        scanf("%d", &L2.length); 
    printf("请输入第二个表的元素:");
        for(int i=0; i<L2.length; i++)
            scanf("%d", &L2.date[i]);
    
    if(merge(L1, L2, L))
        PrintList(L);
    else
        printf("输入错误");
}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

30行应该是 L.date[k] = L2.date[j];
40行应该是 while(j<L2.length)

# include <stdio.h>
 
# define MaxSize 10
 
typedef struct      //定义结构体 
{
    int date[MaxSize];
    int length;
}SeqList;
 
bool merge(SeqList L1, SeqList L2, SeqList &L) //连接两个有序线性表,并存入L中 
{
    if(L1.length + L2.length > MaxSize)
        return false;
    else
    {
        int i = 0, j = 0, k = 0;
        
        while(i<L1.length && j<L2.length)
        {
            if(L1.date[i] <= L2.date[j])
            {
                L.date[k] = L1.date[i];
                k++;
                i++;
            }
            
            else
            {
                L.date[k] = L2.date[j];
                k++;
                j++;
            }
                
        }
        
        while(i<L1.length)
        {
            L.date[k] = L1.date[i];
            k++;
            i++;
        }
        
        while(j<L2.length)
        {
            L.date[k] = L1.date[j];
            k++;
            j++;
        }
        
        L.length = k; 
        
        printf("%d\n", L.length);
        
        return true;
    }
}
 
void PrintList(SeqList L)  //输出线性表L 
{
    for(int i=0; i<L.length; i++)
        printf("%3d", L.date[i]);
}
 
int main(void)
{
    SeqList L1;
    SeqList L2;
    SeqList L;
    
    printf("请输入第一个表的表长:");
        scanf("%d", &L1.length); 
    printf("请输入第一个表的元素:");
        for(int i=0; i<L1.length; i++)
            scanf("%d", &L1.date[i]);
    
    printf("请输入第二个表的表长:");
        scanf("%d", &L2.length); 
    printf("请输入第二个表的元素:");
        for(int i=0; i<L2.length; i++)
            scanf("%d", &L2.date[i]);
    
    if(merge(L1, L2, L))
        PrintList(L);
    else
        printf("输入错误");
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632