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.
-
-
-
-
-
-
-
-
- public class Solution {
- public ListNode swapPairs(ListNode head) {
- if(head==null) return null;
- if(head.next==null) return head;
- ListNode first = new ListNode(-1);
- first.next = head;
- ListNode p = first;
-
- ListNode pre = p;
- ListNode mid = p.next;
- ListNode last = mid==null?null:mid.next;
- while(mid!=null && last!=null){
- mid.next = last.next;
- last.next = mid;
- pre.next = last;
-
- pre = pre.next.next;
- mid = pre.next==null?null:mid.next;
- last = mid==null?null:mid.next;
- }
- return first.next;
- }
- }
原文链接http://blog.youkuaiyun.com/crazy__chen/article/details/45581951