1の#include <stdio.hの> 2の#include <STDLIB.H> 3のtypedef 構造体lノード{ 4 のint NUM。 5 構造体の lノード* 次の; 6 } lノード、* LINKLIST。 7 8のtypedef 構造体のリンク{ 9 LINKLISTデータ。 10 構造体のリンク* 次の; 11 }のリンク、* リスト。 12 ボイド creatList(LINKLIST&L、int型N) 13 { 14 、L =(LINKLIST)はmalloc(sizeof (lノード))。 15 L->次= NULL; 16 LINKLISTリア= L。 17 18 のために(int型 i = 1 ; iが<= N iが++ ) 19 { 20 LINKLIST P =(LINKLIST)はmalloc(はsizeof (lノード))。 21 22 のscanf(" %dの"、およびP-> NUM)。 23 リア>次= P。 24 P->次= NULL; 25 リア= P。 26 } 27 } 28 ボイドトラバース(LINKLISTのL) 29 { 30 LINKLISTのL-P => 次に、 31は 、一方(P) 32 { 33は IF(P->次に== NULL) 34である { 35 のprintf(" %のD "、P- > NUM); //スペースを持つことはできません最後の桁、それ以外のコンパイラパスの出力。なぜ私に聞かないでください!!! 36 } 他{ 37 のprintf(" %のD "、P-> NUM); 38である } 39 40 P = P->次; 41 } 42 のprintf(" の\ n " ); 43 } 44 LINKLIST mergeList(LINKLISTラ、LINKLIST LB、INT nは、INTのM) 45 { 46 LINKLIST LC、A、B、C。 47 Lcは= ラ。 48 = LA-> 次。 49 、B = LB-> 次。 50個の C = Lcと; 51 52 ながら(&& B) 53 { 54 であれば(A-> NUM> B-> NUM) 55 { 56 C->次= B。 57個の C =のB; 58 B = B-> 次。 59 } そう であれば(A-> NUM == B-> NUM) 60 { 61 LINKLIST Q = B。 62 C->次= A。 63個の C = 。 64 = A-> 次。 65 B = B-> 次。 66 フリー(Q)。 67 } そうでなければ 68 { 69 C->次= A。 70個の C = 。 71 = A-> 次。 72 } 73 } 74 75 C->次= A:B; 76 無料(LB); 77 リターンLcは、 78 } 79 のint main()の 80 { 81 int型N、M。 82 83 リストLcは=(一覧)はmalloc(はsizeof (リンク))。 84 リストR = Lcと; 85 しばらく(1 ) 86 { 87 のscanf(" %dの%のD "、&N、&M)。 88 であれば(N == 0 && m個の== 0)破ります。 89 LINKLIST LA、LB; 90 creatList(LA、N)。 91 creatList(LB、M)。 92 93 リスト・PC =(一覧)はmalloc(はsizeof (リンク)); 94 LINKLIST Lcは= mergeList(LA、LB、N、M); 95 PC->データ= Lcと; 96 R->次=PC; 97 R = PC。 98 PC->次= NULL; 99 100 } 101 リストP = LC-> 次。 102 一方、(P) 103 { 104 トラバース(P-> データ)。 105 P = P-> 次。 106 } 107 }