説明
鎖配列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 。 }