人又不聪明 2022-02-22 12:57 采纳率: 100%
浏览 26
已结题

连接两个有序线性表,并存入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("输入错误");
}

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

2条回答 默认 最新

  • CSDN专家-link 2022-02-22 13:06
    关注

    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("输入错误");
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 已采纳回答 2月22日
  • 创建了问题 2月22日

悬赏问题

  • ¥60 pb数据库修改或者求完整pb库存系统,需为pb自带数据库
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路