Given a linked list, swap every two adjacent nodes and return its head.
You may not modify the values in the list’s nodes, only nodes itself may be changed.
Example:
Given1->2->3->4
, you should return the list as2->1->4->3
. Solution 1:
public class Solution {
public ListNode swapPairs(ListNode head) {
if(head == null || head.next == null) return head;
int count = 1;
ListNode current = head;
ListNode temp = head;
ListNode returnNode = head.next;
while(current.next!=null){
if(getNextNode(current)!=null && count == 1){
ListNode nextNode = getNextNode(current);
current.next = nextNode.next;
nextNode.next = current;
temp = current;
if(current.next!=null){
current = current.next;
}
count++;
}else if(getNextNode(current)!=null && count > 1){
ListNode nextNode = getNextNode(current);
current.next = nextNode.next;
nextNode.next = current;
temp.next = nextNode;
temp = current;
if(current.next!=null){
current = current.next;
}
}
}
return returnNode;
}
public ListNode getNextNode(ListNode head){
return head.next;
}
}