[データ構造及びアルゴリズム】隣接ノードとのリストペアワイズ交換を考えると、交換にリストを返します。

与えられた1->2->3->4、あなたは返す必要があります2->1->4->3

対象は非常にシンプルに見える、それは先行ノードに駆動ノードのポイントを聞かせすること、そして、ノード前駆体ノードは、後輪駆動後輪駆動ノードを指すが、また、洪水のノードは、その少しトリッキー交換する必要があります後。
次のように図のアイデアが例示されている
1 - > 2 - > X - > Y。
| | |
左から右AFT
ステップ:初期preNode =は、右、左、右後部4つのノードポインティング
ステップ:予備=左=左、右= pre.next right.next;

1 < - > X-2 - > Y
         | | |
       pre.nextは、右後方を左
= NULL X-場合、pre.next = NULL、 
もしX =ヌル、Y =ヌル、 pre.next = X;
そうでなければY - > X(Y.next = X )、pre.next = Y、予め= X。
コード
ListNode swapPairsパブリック(ListNodeヘッド){ 
//ならない境界条件/だけつのノード、直接リターン
        IF(ヘッド== NULL || head.next == NULL)
            戻りヘッド; 
        
        ListNodeヘッドは、右= head.nextを=を残し、 = right.next AFT; 
        ListNode preHead新しい新しいListNode =(-1); 
        preHead.next =右; 
        ListNode新しい新しい事前ListNode =(-1); //先行ノード
        一方{(右= NULL!)
            
            right.next =左。
            右= pre.next; 
            プリ=左; 
            
            IF(AFT == NULL){ 
                pre.next = NULL; 
                ; BREAK 
            } 
            = AFT左、
            右= aft.next。
            
            IF(右== NULL)
            { 
                pre.next =左。
            }他{ 
                right.next =船尾。
            } 
        } 
        戻りpreHead.next。
    }

  アイデアがあります

おすすめ

転載: www.cnblogs.com/zhengwangzw/p/11462560.html