#<iostreamの>などが 使用して名前空間STDを、 構造体{lノード データのint; lノード * 次; }; //は、ヘッドノードのアドレス保存 のstruct {LINKLIST lノード * 頭を; }; //は、第1ノード初期化のリスト作成 、ボイドの作成を(LINKLIST&L) { L.head = 新しい新しいlノード; L.head - >データ= 0; L.head - >次に= NULL; } ボイド表示(LINKLIST&L) { lノード * P = L.head - > 次に; 一方、(P) { COUT << P - >データ<< " " ; P = P - > 次に; } COUT << ENDL; リターン; } // 添加元素X、およびので、昇順にリスト ボイドInsertList(LINKLIST&L、 Xはint) { // P最初のデータノード、PRヘッドノード lノード * P = L.head - >次に、PR * = L.head; ながら(X && P> = P - > データ) { IF( P == X - >データ) のリターン ; // 繰り返し要素が挿入されていない PR = ; P Pを = P - >次に; } // ループの端テーブル又は第Xの終了位置(位置を挿入する)データよりも小さい見つかったことを示す // 両方のケースを挿入する必要があり、コードは同じであり、 lノード * = S 新しい新しいlノード。 S - >データ= X; S - >次に= P; PR - >次に= S; リターン; } // 削除する要素X 空隙DeleteList(LINKLIST&L、INT X) { lノード * P = L.head - > 次に; lノード * PR = L.head; 一方(P) { IF(P - >データ== X) { PR - >次= P - > 次。 Pを削除します。 返します。 } PR = P。 P = P - > 次。 } を返します。 } // 两个有序集合的并集 空隙union_1(LINKLIST&HA、LINKLIST&HB) { LINKLIST ha_temp = HA、hb_temp = HB。 lノード * P1 = ha_temp.head、* P2 = hb_temp.head。 一方(P2) { InsertList(ha_temp、P2 - > データ)。 P2 = P2 - > 次。 } リターン; } // 两个有序集合的交集 空隙union_2(LINKLIST&HA、LINKLIST&HB) { lノード * P1 = ha.head、* P2 = hb.head。 一方(P1 && P2) { 場合( - >データ== P2 - > P1 データ) { P 1 - = P1> 、次 P2 = P2 - > 次。 } そう であれば(P1 - >データ<P2 - > データ) { lノード *のTEMP = P1。 P1 = P1 - > 次。 DeleteList(ヘクタール、TEMP - >データ); } 他 { P2 = P2 - > 次に; } } 一方(P1) { lノード * TEMP = P1、 P1 = P1 - > 次に、 DeleteList(HA、TEMP - > データ); } } メインINT() { // 要素の重複セットが存在しないことに注意 LINKLIST HAは、 (HA)を作成し、 COUT << 「(-1000にエンド信号として)挿入する要素を入力し、収集HAを作成する:」 << ENDL。 TEMP int型 =endl; ショー(HB);同時に COUTの <<一時&&一時!= -1000 )ENDL; union_1(HA、HB); COUT << " HAとHBとの二組として設定され、" << ENDL; 表示(HA); COUT << ENDL << 」========== ================================================== ====== 「 <<てendl << てendl; // ================================== ====================================== LINKLISTのHC、 作成します(HC); coutの << " コレクションHCを作成し、(-1000としてエンド信号)に挿入する要素を入力してください:" << てendl; TEMP = 0; しばらく(CIN >> TEMP && TEMP!= -1000 InsertList(HC、TEMP); coutの << " HC次のように順序集合" << てendl; ショー(HC); coutの << ENDL; LINKLISTのHD; (HD)を作成し; coutの << 「コレクションHDを作成し、入力してください(-1000に終了信号のような)要素を挿入:" << てendl; TEMP = 0; しばらく(&& CIN >> TEMPのTEMP = -1000! ) InsertList(HD、TEMP); COUT << " 順序集合以下のHD 「 << てendl; ショー(HD); coutの <<endl; union_2(HC、HD)、 COUTは、 << " HCおよびHDを以下のように二組の交点である" << ENDL; 表示(HC); 戻り0; }
結果: