qq_39677327 2022-05-04 02:32 采纳率: 94.9%
浏览 68
已结题

数据结构链表部分内容,代码已有但有问题,希望修改

题目:设计一个程序,生成两个按值非递减有序排列的线性表LA和LB,再将LA和LB归并为一个新的线性表LC,且LC中的数据仍按值非递减有序排列,输出线性表LA、LB、LC。

以下是自己的代码,但是好像是main 函数的后半部分从设置完LA和LB的随机数之后就有错误,不知道错在哪,
##

#include <stdio.h>
#include <algorithm>
#include<time.h>
#include<cstdlib>
#include<iostream>
using namespace std;

bool cmp(int a,int b)
{
    return a <= b;
}
 
void print_array(int a[],int range)
{
    int i = 0;
    while(i < range)
    {
        printf("%d ",a[i ++]);
    }
    printf("\n");
} 
int main()
{
    int T1, T2;
    srand((unsigned)time(NULL));
    cout << "请输入第一个线性表元素的个数:" << endl;
    cin >> T1;
    int* LA= new int[T1];
    for (int i = 0; i < T1; i++) {
        LA[i] = rand()%10;
    }
    cout << "请输入第二个线性表元素的个数:" << endl;
    cin >> T2;
    int* LB = new int[T2];
    for (int i = 0; i < T2; i++)
    {
    
        LB[i] = rand()%10;;
    }
    int LC[T1+T2];
    sort(LA,LA + T1,cmp);
    printf("LA: ");
    print_array(LA,T1);   
    sort(LB,LB + T2,cmp);
    printf("LB: ");
    print_array(LB,T2); 
    int i = 0; 
    while(i < T2)
    {
        LC[i] = LA[i];
        LC[i + T2] = LB[i ++];
    }
    sort(LC,LC + T1+T2,cmp);
    printf("LC: ");
    print_array(LC,T1+T2); 
    system("pause");
    return 0;
}

img

img

  • 写回答

2条回答 默认 最新

  • 关注

    这种题目是需要比较LA、LB中元素的大小,按照LA、LB元素的大小顺序添加到LC中, LC直接就是有序的。
    不应该是简单的合并LA、LB元素到LC中之后再对LC用sort()重新排序。

    你题目的解答代码如下:

    #include <stdio.h>
    #include <algorithm>
    #include<time.h>
    #include<cstdlib>
    #include<iostream>
    using namespace std;
    
    bool cmp(int a,int b)
    {
        return a <= b;
    }
    
    void print_array(int a[],int range)
    {
        int i = 0;
        while(i < range)
        {
            printf("%d ",a[i ++]);
        }
        printf("\n");
    }
    int main()
    {
        int T1, T2;
        srand((unsigned)time(NULL));
        cout << "请输入第一个线性表元素的个数:" << endl;
        cin >> T1;
        int* LA= new int[T1];
        for (int i = 0; i < T1; i++) {
            LA[i] = rand()%10;
        }
        cout << "请输入第二个线性表元素的个数:" << endl;
        cin >> T2;
        int* LB = new int[T2];
        for (int i = 0; i < T2; i++)
        {
    
            LB[i] = rand()%10;;
        }
        int LC[T1+T2];
        sort(LA,LA + T1,cmp);
        printf("LA: ");
        print_array(LA,T1);
        sort(LB,LB + T2,cmp);
        printf("LB: ");
        print_array(LB,T2);
        int i = 0, j = 0, k =0;
        while(i < T1 && j < T2)
        {
            if (LA[i] < LB[j])
                LC[k++] = LA[i++];
            else
                LC[k++] = LB[j++];
        }
        while(i < T1)
            LC[k++] = LA[i++];
        while(j < T2)
            LC[k++] = LB[j++];
        printf("LC: ");
        print_array(LC,T1+T2);
        system("pause");
        return 0;
    }
    

    img

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月12日
  • 已采纳回答 5月4日
  • 修改了问题 5月4日
  • 创建了问题 5月4日

悬赏问题

  • ¥50 关于#html5#的问题:H5页面用户手机返回的时候跳转到指定页面例如(语言-javascript)
  • ¥15 无法使用此凭据登录,因为你的域不可用,如何解决?(标签-Windows)
  • ¥15 yolov9的训练时间
  • ¥15 二叉树遍历没有报错但无法正常运行
  • ¥15 在linux系统下vscode运行robocup3d上场球员报错
  • ¥15 Python语言实验
  • ¥15 SAP HANA SQL 增加合计行
  • ¥20 用C#语言解决一个英文打字练习器,有偿
  • ¥15 srs-sip外部服务 webrtc支持H265格式
  • ¥15 在使用abaqus软件中,继承到assembly里的surfaces怎么使用python批量调动