二十二の交換リストノード

二十二リンクリストにノードを切り替えます

LeetCode

隣接ノードとのリストペアワイズ交換を与えられ、そして交換にリストを返す、単に内部ノードの値を変更するが、ノードの実際の交換を必要としません。

考え

まず構造特性と原則のリストを理解し、リストには、リニアテーブル構造、データの挿入や削除の低複雑ですが、高い複雑さを見つけるために横断します。リストの原則から派生し、リストの先頭を取得するために必要な、我々は、操作のリスト、それが直接的または間接的であるためには、リストの露光ヘッドノードで、操作リストノード。

コードの実装

Javaで実装されたコードを使用します。

class Solution {
    public ListNode swapPairs(ListNode head) {
    //定义新的链表为dummy,头结点的值0
        ListNode dummy = new ListNode(0);
   //dummy的后一个节点指向head     
       dummy.next = head;
       ListNode p = dummy;
       if(p.next == null || p.next.next == null) return head;
            //交换两个节点,修改他的next指向
           while(p.next != null && p.next.next != null){
               ListNode n1 = p.next;
               ListNode n2 = p.next.next;
               n1.next = n2.next;
               n2.next = n1;
             
}
            //重新定head
            p = n2;
        }
        //返回一个头结点,也是直接返回交换后的链表。
        ListNode result = dummy.next;
        
        return result;
    }
}

おすすめ

転載: blog.csdn.net/qq_21306815/article/details/93765238