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) {
ListNode newHead = new ListNode(0);
newHead.next = head;
for(ListNode curr = newHead; curr.next != null && curr.next.next != null; curr = curr.next.next){
curr.next = swap(curr.next, curr.next.next);
}
return newHead.next;
}
private ListNode swap(ListNode prev, ListNode after){
prev.next = after.next;
after.next = prev;
return after;
}
}