(Leetcode)-cリストリバース言語

単独リンクリストを逆にします。

例:

入力:1-> 2-> 3-> 4- > 5-> NULLの
出力:5-> 4-> 3-> 2- > 1-> NULL

反復法、次のように:

/ * * 
 *単独リンクリストのための定義。
 *構造体ListNode { 
 * INTヴァル。
 次の*構造体ListNode *; 
 *}。
 * / 
構造体 ListNode * reverseList(構造体 ListNode * ヘッド){
     場合(ヘッド== NULL ||頭部>次== NULL)
         戻りヘッド。
    
    構造体 ListNode *事前= ヘッド。
    構造体 ListNode * CUR =頭部> 次。
    構造体 ListNode * TMP =頭部>ネクスト> 次; 
    
    一方、(CUR)
    { 
        TMP = cur-> 次。
        駄犬- >次= プレ。 = CUR。
        CUR = TMP; 
    } 
    ヘッド - >次= NULL; 
    
    戻る前; 

}

次のように再帰的な方法は次のとおりです。

構造体 ListNode * reverseList(構造体 ListNode * ヘッド){
     場合(ヘッド== NULL ||頭部> ==次NULL)
         戻りヘッド。
    
    { 
        構造体 ListNode * newhead = reverseList(頭部> 次); 
        ヘッド - >ネクスト>次= ヘッド。
        ヘッド - >次= NULL;
        返すnewhead; 
        
    } 
}

要約下で、再帰的な書き込みは、全体として、再帰最内層が決定され、一つ、二つの部分再帰的に分割することができ、この問題のために、再帰は、ヘッドが空である場合、最も内側の層である、又は頭部>次の空です。その後、最外層から出発して、第2の部分を書き込み、それが想定され、残りの部分は、再帰関数は、リストが反転された戻り通過し、その後残りを行うされます。再帰関数は、頭部、尾ことに留意すべきである、そして中央部分が再帰によって完成させることができます。

おすすめ

転載: www.cnblogs.com/xingmuxin/p/11304359.html