24. Swap Nodes in Pairs(每两个相邻节点进行一次交换)

来源:互联网 发布:数据人生txt全集下载 编辑:程序博客网 时间:2024/05/22 07:48

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.

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    public ListNode swapPairs(ListNode head) {        if(head==null||head.next==null)        return head;        ListNode p=head,h=p,q=head.next;        p.next=q.next;            q.next=p;            head=q;            if(p.next!=null){                p=p.next;                q=p.next;            }else return head;        while(q!=null){            p.next=q.next;            q.next=p;            h.next=q;            h=p;            p=p.next;            if(p!=null)            q=p.next;            else return head;        }return head;    }}


0 0
原创粉丝点击