<1 OJは毎日> -LeetCode 21は、二つのソートされたリンクリストをマージ

トピック:

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 "、頭部>ネクスト> データ)。
        ヘッド =頭部> 次。
    } 
}

 

おすすめ

転載: www.cnblogs.com/mhq-martin/p/11427369.html