BJFU-225-リンクリストの順序付けられたシーケンスに基づいて2つの増分をマージ

  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)はmallocsizeof (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 }

 

おすすめ

転載: www.cnblogs.com/wwww2/p/11745429.html