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.
解题思路是前2个节点互换,然后先前的第一个节点的下一个指向的是第三个节点,而第三个节点需要递归实现。最后返回先前是第二个节点(交换之后就是第一个节点)。
public class ListNode(){
int val;
ListNode next;
ListNode (int x){
val=x;}
}
public class solution{
public ListNode swap(ListNode head)
{
if(head==null||head.next==null) return head;
ListNode first=head,second=first.next,third=second.next;
second.next=first;
first.next=swap(third);
return second;
}
}