Swap Nodes in Pairs

关键是想好swap 的function怎么写

我的做法是输入输出两支点pre& end,中间的两个node swap

public class Solution {
    public ListNode swapPairs(ListNode head) {
        if(head==null || head.next==null) return head;
        ListNode h = new ListNode(-1);
        h.next = head;
        ListNode pre = h;
        ListNode end = head.next;
        
        while(end!=null && end.next!=null){
            end = end.next;
            swapNodes(pre,end);
            pre = pre.next.next;
            end = end.next;
        }

        if(end!=null && end.next==null)
            swapNodes(pre, end.next);
            
        return h.next;
    }
    public void swapNodes(ListNode pre, ListNode end){
        ListNode tmp = pre.next;
        pre.next = pre.next.next;
        pre.next.next = tmp;
        tmp.next = end;
    }
}

 

posted @ 2015-04-07 05:02  世界到处都是小星星  阅读(143)  评论(0编辑  收藏  举报