Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given
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(null == head) return null; ListNode resPreHead = new ListNode(0); ListNode resIndex = resPreHead; ListNode preHead = new ListNode(0); preHead.next = head; ListNode index = preHead; while(null != index.next){ ListNode a = index.next; ListNode b = null; if(null != a) b = a.next; if(null == b){ index.next = null; }else{ index.next = b.next; } if(null != b){ resIndex.next = b; resIndex = b; resIndex.next = null; } if(null != a){ resIndex.next = a; resIndex = a; resIndex.next = null; } } return resPreHead.next; } }
No comments:
Post a Comment