首页 > 其他 > 详细

顺序表应用5:有序顺序表归并

时间:2020-03-27 21:20:23      阅读:53      评论:0      收藏:0      [点我收藏+]

顺序表应用5:有序顺序表归并

Description

已知顺序表A与B是两个有序的顺序表,其中存放的数据元素皆为普通整型,将A与B表归并为C表,要求C表包含了A、B表里所有元素,并且C表仍然保持有序。

Input

 输入分为三行:
第一行输入m、n(1<=m,n<=10000)的值,即为表A、B的元素个数;
第二行输入m个有序的整数,即为表A的每一个元素;
第三行输入n个有序的整数,即为表B的每一个元素;

Output

 输出为一行,即将表A、B合并为表C后,依次输出表C所存放的元素。

Sample

Input 

5 3
1 3 5 6 9
2 4 10

Output 

1 2 3 4 5 6 9 10
//ios::sync_with_stdio(false);
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#define MaxSize 100001
 
using namespace std;
typedef int element;
typedef struct List{
    element data[MaxSize];
    int size;
}list1,list2,list3;
 
void init(list1 &l1,list2 &l2,int a,int b,list3 &l3){
    for(int i = 0 ; i < a;i++){
        l1.data[i] = 0;
    }
    l1.size = a;
 
    for(int i = 0 ; i < b;i++){
        l2.data[i] = 0;
    }
    l2.size = b;
 
    for(int i = 0 ; i < a + b;i++){
        l3.data[i] = 0;
    }
    l3.size = a + b;
}
 
void input(list1 &l1,list2 &l2,int a,int b){
    int j;
 
    for(int i = 0 ; i < a;i++){
        cin >> j;
        l1.data[i] = j;
        //printf("%d\n",l1.data[i]);
    }
 
    for(int i = 0 ; i < b;i++){
        cin >> j;
        l2.data[i] = j;
        //printf("%d\n",l2.data[i]);
    }
}
 
void merge(list1 &l1,list2 &l2,list3 &l3){
    int aa = 0,bb = 0,index = 0;
    int c = l1.size + l2.size;
    //printf("%d\n",c);
    while(c--){
        int a = (aa >= l1.size ? 65535 : l1.data[aa]);
        //printf("%d\n",a);
        int b = (bb >= l2.size ? 65535 : l2.data[bb]);
        if(a > b){
            l3.data[index++] = b;
            //printf("%d\n",a);
            bb++;
        }else{
            l3.data[index++] = a;
            aa++;
        }
    }
}
 
void output(list3 &l3){
    int i;
    for(i = 0 ; i < l3.size - 1;i++){
        printf("%d ",l3.data[i]);
    }
    printf("%d\n",l3.data[i]);
}
 
int main(){
    ios::sync_with_stdio(false);
    int a,b;
    list1 l1;
    list2 l2;
    list3 l3;
    cin >> a >> b;
    init(l1,l2,a,b,l3);
    input(l1,l2,a,b);
    merge(l1,l2,l3);
    output(l3);
}

 

顺序表应用5:有序顺序表归并

原文:https://www.cnblogs.com/xiaolitongxueyaoshangjin/p/12584024.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!