トピック:
2は、新たなソートされたリストとリターンにリストを命じました。新しいリストは、二つのリストで構成与えられたモザイク内のすべてのノードです。
例:
入力:1-> 2-> 4、1-> 3-> 4
出力:1-> 1-> 2-> 3-> 4-> 4
コード:
// 21.組み合わせた2つの命じたリストが.CPP:エントリポイントのコンソールアプリケーションを定義します。 // の#include " STDAFX.H " の#include <stdio.hに> する#include <STDLIB.H> 構造体一覧{ int型のデータ、 構造体のリスト* 次に; }; // 2つの鎖融合、挿入ソート機能 ボイドソート(構造体 L1 *リスト、構造体のリスト* L2); // 出力リストの ボイド出力(構造体のリスト* ヘッド); // 入力リスト のボイド入力(構造体一覧ヘッド*、int型NUM); INT のmain() { int型N-; リスト *、* H2のH1; // 初期化以下のリストの2つのヘッド、リスト4行の =のH1(構造体一覧*)のmalloc(はsizeof(構造体のリスト)); H2 =(構造体一覧* )はmalloc(はsizeof(構造体のリスト)); H1 - >次= NULL; H2 - >次= NULL; // 二つのリスト入力 のprintf(" ノードのリストを入力してください:N- \ " ); scanf関数(" Dの%"、&N-); のINPUT(H1、N-); のprintf(" 第二リンクノードのリストを入力してください:\ N- " ); scanfの(" %Dを"、&N-); INPUT(H2、N-); // リストをマージし、並び 替え(H2、のH1); // 合成出力リスト 出力(のH1); } ボイド INPUT(構造体一覧ヘッド*、INT NUM) { 構造体一覧* TMP; 構造体一覧* END; エンド = ヘッド; のprintf(" リストノードを入力してください:N- \ " ); のため(int型I = 0 ; I = NUM;!私は++ ) { TMP =(構造体のリスト*)はmalloc(はsizeof(構造体のリストを)); scanf関数(" %のD "、&tmp-> データ)。 エンド - >次= TMP; TMP - >次= NULL; 終了 = TMP; } } ボイドソート(構造体のリスト* L1と、構造体のリスト* L2) { 構造体リスト*のP1、P2 *、* TMP。 P1 = L1; P2 = L2-> 次。 一方、(P1->次に&& P2) { 場合(P1->ネクスト>データ> P2-> データ) { TMP = P2-> 次。 P2 - >次= P1-> 次。 P1 - >次= P2; P2 = TMP; } 他 P1 = P1-> 次。 } 場合(P2)は 、P1 - >次= P2。 } ボイド出力(構造体リスト* ヘッド) { 一方(頭部> 次) { のprintf(" %D "、頭部>ネクスト> データ)。 ヘッド =頭部> 次。 } }