実験データ構造---非減少二つのリストをマージ

説明

鎖配列AおよびB、AおよびBの使用を示す整数A及びBをインクリメント所与の2つの配列は、C、Cの配列は、重複データを許可しない昇順順序付けられたシーケンスに結合されます。スペースの複雑さはO(1)である必要があります。

エントリー

データの複数のセット、データの三行の各セット、第一行動系列長N及びM AとB、N元素A、M元素B(要素間のスペースで区切られた)の第3のシーケンスの挙動の第2シーケンスの挙動。午後12時のN = 0およびm =入力端。

輸出

各データ間のスペースで区切られた出力データを、合成配列の各行のため。

サンプル入力1

5
1 3 5 7 9
2 4 6 8 10
3 4
1 5 9
1 2 5 9
0 0

サンプル出力1

1 2 3 4 5 6 7 8 9 10
1 2 5 9

書式#include <iostreamの>
 使用して 名前空間はstdを、
typedefは構造体の lノード*のリスト。
構造体lノード{
     int型データ、
    次のリスト; 
}。
 InitList(リスト&L)
{ 
    L = 新しいlノード。
    L - >次= NULL; 
} 
ボイド CreatList(リスト&L、int型NUM)
{ 
    L = 新しいlノード。
    L - >次= NULL; 
    リストR = L。
    以下のためのint型I = 0 ; I <NUM。I ++ 
    { 
        リストP = 新しいlノード。
        CIN >> p型> データ; 
        P - >次= NULL; 
        R - >次= P。
        R = P。
    } 
} 
リストMergeList(リストA、リストB)
{ 
    リストC。
    リストPA、PB、PC、
    PA = A-> 次。
    PB = B-> 次。
    C = A。
    PC = C;
    一方、(PA && PB)
    {
        もし(PA->データ<PB-> データ)
        { 
            PC - >次= PA。
            PC = PA; 
            PA = PA-> 次。
        } 
        
        { 
            場合(PA->データ> PB-> データ)
            { 
                PC - >次= PB。
                PC = PB; 
                PB = PB-> 次。
            } 
            そう
                であれば(PA->データ== PB-> データ)
                { 
                    PC - >次= PA。
                    PC = PA; 
                    PA = PA-> 次。
                    PB = PB-> 次。
                } 
        } 
    } 
    PC - >次= PA?PA:PB; // 如果不是のPA、可能是A空了
    削除bは、
    リターンC; 
} 
ボイドプリント(リストL)
{ 
    リストP = L-> 次。
    一方、(P-> 次)
    { 
        COUT << P->データ<< "  " 
        P = P - > 次。
    }
    COUT << p型>データ<< てendl; 
} 
int型のmain()
{ 
    int型、N M。
    一方、(CIN >> N >> Mを&&(N!= 0 || M!= 0 ))
    { 
        リストA、B。
        CreatList(A、N)
        CreatList(B、M)。
        リストC = MergeList(A、B)。
        印刷(C); 
    } 
    戻り 0 
}

 

おすすめ

転載: www.cnblogs.com/h694879357/p/11672332.html