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

顺序表应用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
",l1.data[i]);
    }
 
    for(int i = 0 ; i < b;i++){
        cin >> j;
        l2.data[i] = j;
        //printf("%d
",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
",c);
    while(c--){
        int a = (aa >= l1.size ? 65535 : l1.data[aa]);
        //printf("%d
",a);
        int b = (bb >= l2.size ? 65535 : l2.data[bb]);
        if(a > b){
            l3.data[index++] = b;
            //printf("%d
",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
",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);
}
原文地址:https://www.cnblogs.com/xiaolitongxueyaoshangjin/p/12584024.html