データ構造練習問題---集計表(順序表)


説明
vaおよびvbはそれぞれ非減算秩序線形テーブルであり、vaおよびvbを新しい線形テーブルvcに結合し、vcが依然として非減算秩序を維持することが知られている.
この問題では、線形テーブル要素は整数です.リニア・テーブルの最大長は1000です.
入力
入力データには複数のグループがあり、第1の動作テストデータのグループ数n、次いで2 n行であり、各グループのテストデータには2行ある.
最初の行の最初の数はvaの要素の個数で、後ろはnの整数で、vaのすべての要素を表します
2行目の最初の数はvbの要素の個数で、後ろはnの整数で、vbのすべての要素を表します
しゅつりょく
マージ後の長さとvcのすべての要素を出力
サンプル入力
2 2 1 2 2 2 3 3 1 2 3 3 4 5 6
サンプル出力
4 1 2 2 3 6 1 2 3 4 5 6
#include
#include
#define MI 10
#define MX 20
using namespace std;
 struct list
{
    int *data;
    int length;
    int listsize;
};
int Inlist(list &l)
{
    l.data=(int *)malloc(MI*sizeof(int));
    if(!l.data)return 0;
    l.length=0;
    l.listsize=MI;
    return 1;
}
int creata(list &l)
{
    int n;
    cin>>n;
    l.data[l.length++]=n;
    if(l.length>=l.listsize)
    {
        l.data=(int *)realloc(l.data,(l.listsize+MX)*(sizeof(int)));
        if(!l.data)return 0;
        l.listsize+=MX;
    }
    return 1;
}
int Xulist(list l,int i,int &e)
{
    if(i<1||i>l.length)return 0;
    e=l.data[i-1];
    return 1;
}
int merge_list(list la,list lb,list &lc)
{
    int i=1,j=1,ai,aj;
    while(i<=la.length&&j<=lb.length){
    Xulist(la,i,ai);Xulist(lb,j,aj);
    if(ai<=aj){
        lc.data[lc.length++]=ai;i++;
        if(lc.length>=lc.listsize){
            lc.data=(int *)realloc(lc.data,(lc.listsize+MX)*(sizeof(int)));
            if(!lc.data)return 0;
            lc.listsize+=MX;
        }
    }
    else{
        lc.data[lc.length++]=aj;j++;
        if(lc.length>=lc.listsize){
        lc.data=(int *)realloc(lc.data,(lc.listsize+MX)*(sizeof(int)));
            if(!lc.data)return 0;
            lc.listsize+=MX;
        }
    }
   }
   while(i<=la.length)
   {
       Xulist(la,i++,ai);
       lc.data[lc.length++]=ai;
        if(lc.length>=lc.listsize){
        lc.data=(int *)realloc(lc.data,(lc.listsize+MX)*(sizeof(int)));
            if(!lc.data)return 0;
            lc.listsize+=MX;
        }
   }
   while(j<=lb.length)
   {
        Xulist(lb,j++,aj);
        lc.data[lc.length++]=aj;
        if(lc.length>=lc.listsize){
        lc.data=(int *)realloc(lc.data,(lc.listsize+MX)*(sizeof(int)));
            if(!lc.data)return 0;
            lc.listsize+=MX;
        }
   }
   return 1;
}
int main()
{
    int n;
    list la,lb,lc;
    cin>>n;
    while(n--)
    {
         int a,b,i,ch;
         cin>>a;
         Inlist(la);
         Inlist(lb);
         Inlist(lc);
         for(i=0;i>b;
for(i=0;i