leetcode Swap Nodes in Pairs

题目

Given a linked list, swap every two adjacent nodes and return its head.

For example,
Given 1->2->3->4, you should return the list as 2->1->4->3.

Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.

解题思路:

利用三个指针实现,p1为每对pair里面的前一个数,p2为后一个数。

代码:
public ListNode swapPairs(ListNode head) {  
        if (head == null || head.next == null)  
            return head;  
        ListNode prev = head;  
        ListNode p1 = head;  
        ListNode p2;  
        while (p1 != null && p1.next != null) {  
            p2 = p1.next;  
            p1.next = p2.next;  
            p2.next = p1;  
            if (prev == head)  
                head = p2;  
            else  
                prev.next = p2;  
            prev = p1;  
            p1 = p1.next;  
        }  
        return head;  
    }

推荐阅读更多精彩内容