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;
}
}