题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
public ListNode swapPairs(ListNode head) {
// 这里两个判断,就会保证链表长为奇数时,最后一个节点直接返回,不会和前面的交换
if (head == null || head.next == null) return head;
ListNode first = head, second = head.next;
first.next = swapPairs(second.next);// 返回的子链表被 first接收
second.next = first;
return second;
}