CCF、P136、例6.5
都市の数、道路の数を入力します
各道路の両端都市を入力してください
各都市の出力は、直接都市に接続することができます。
例:
入力:
4 5
2 3
3 1
1 4
2 4
1 2
出力:
3 4 2
3 4 1
2 1
1 2
アイデア:
配列に格納されたリンクリストは、直接各都市の都市数(入力内容によって入力は、二つの都市の後列に追加される)に接続することができます。
コード:
#include <iostreamの> する#include < ストリング > の#include <cmath> の#include <アルゴリズム> 使用して 名前空間STD; // ノード構造 構造体ノード { int型V、 ノード * 次に; }; // 出力リスト ボイド out_lian(ノード* P) { 行う { COUT << P-> V << " " ; P = P-> 次に; } 一方(P =!NULL); } // 値(ノードを追加) lian_append(ノード*のX、ノード* Y) { ノード *ヘッド= X; // ノードリストの終わりを見つけ ながら(X->次!= NULL) { X = X-> 次に; } // 追記 X->次= Y; } int型のmain() { int型の市、道、C1、C2、 ノード * P [ 10 ]、* Tと、 のための(int型 I = 0 ;私は< 10 ; Iは++ ) { P [I] = NULLを; } CIN>>市>> 道路。 用(INT J = 0 ; J <道路、J ++ ) { CIN >> C1 >> C2。 トン = 新しいノード。 トン - > V = C2; トン - >次= NULL; 場合(P [C 1 1 ] == NULL) { P [C1は、 - 1 ] = Tと、 } 他 { lian_append(P [C1 - 1 ]、T); } 、T = 新しいですノード; トン - > V = C1; トン - >次= NULL; 場合(P [C2- 1 ] == NULL) { P [C2は、 - 1 ] = Tと、 } 他 { lian_append(P [C2 - 1 ]、T); } } のために(int型 i = 0 ; iは都市<I ++の) { out_lianを(P [I])。 coutの << てendl; } }