10、リンクリスト

件名の説明:

入力されたリンクリスト、リンクリスト出力の逆数k番目のノード。

問題解決のアイデア:最後から二番目のノードk、正(サイズK + 1)の数のノード

 公共 ListNode FindKthToTail(ListNodeヘッド、INT K){
          場合(ヘッド== NULL || K <= 0 || K> サイズ(ヘッド)){
            戻り ヌル
          } 
       INT N =サイズ(ヘッド)-k + 1 一方、(N> 1 ){ 
           ヘッド = head.next。
           N - ; 
       } 
      戻りヘッド。
    } 
    
    公共  int型のサイズ(ListNodeヘッド){
      int型のカウント= 0 ;
     しばらく(ヘッド!= nullの){ ++ ; 
         ヘッド = head.next。
     } 
    を返す数えます。
 }

2つのアイデアの解決:二つのポインタの使用、kの差が、前回リンクリストへのバックポインタを、最後から二番目のほとんどのk個のノードの前のポインタが(更新されます)

 

件名の説明:

リストを反転リストを入力した後、出力ヘッダの新しいリスト。

 公共ListNode ReverseList(ListNodeヘッド){ 
        
        場合(ヘッド== NULL 戻り ヌル
             
              ListNode reversedHead = nullを
              ListNode電流 = ヘッド。
              
              ListNode TMP = nullを
              前ListNode = nullを
              
              一方、(!電流= NULL ){ 
                  
              TMP = current.next。
              current.next = 前; 
                  
              もし(TMP == nullの 
              reversedHead = 現在; 
                   = 現在; 
              現在 = TMP; 
              } 
              戻りreversedHead。

    }

 

 

トピック3:

二つは、単調もちろん、その後私たちは、合成リスト非減少規則を満たすために必要な、二つのリストを合成した後、入力リストおよび出力リストを増やします

二つのリストを横断する、各値は、移動、一つずつ比較されます。加えます

 公共ListNodeマージ(ListNodeのList1、LIST2 ListNode){ 
         ListNodeヘッド = NULL ; 
         ListNode TMP   = NULL ; 
         ListNode電流 = NULL ; 
         
         ながら(!のList1 = ヌル!&& LIST2 = NULL ){
              IF(list1.val> list2.val){ 
                 電流 = LIST2; 
                 LIST2 = current.next; 
                 TMP = 現在; 
                 tmp.next = NULL ; // クリアノード値の後に挿入
                 ヘッド= (頭、TMP)を加えます。
             } { 
                 電流 = LIST1。
                 リスト1 = current.next。
                 TMP = 現在; 
                 tmp.next = nullを
                 ヘッド = (頭、TMP)を加えます。
             } 
         } 
         
         一方(LIST1!= NULL ){ 
             電流 = LIST1。
             リスト1 = current.next。
             TMP = 現在; 
             tmp.next= NULL ; 
             ヘッド = (頭、TMP)を加えます。
         } 
         
         一方(LIST2!= NULL ){ 
             電流 = LIST2。
             LIST2 = current.next。
             TMP = 現在; 
             tmp.next = nullを
             ヘッド = (頭、TMP)を加えます。
         } 
         
         戻りヘッド。
    } 
    
    パブリック  ListNodeアド(ListNodeヘッド、ListNodeノード){
         場合(ヘッド== NULL ){ 
             ヘッド =ノード; 
        } { 
            ListNode電流 = ヘッド。
          一方、(!current.next = NULL ){ 
             電流 = current.next。
          } 
         current.next = ノード。
        } 
        戻りヘッド。
    }

 

おすすめ

転載: www.cnblogs.com/kobe24vs23/p/11335063.html