两两交换链表中的节点
题目
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
代码
非递归解法
public ListNode swapPairs(ListNode head) { ListNode pre = new ListNode(0); pre.next = head; ListNode temp = pre; while (temp.next != null && temp.next.next != null) { ListNode start = temp.next; ListNode end = start.next; temp.next = end; start.next = end.next; end.next = start; temp = end.next; } return pre.next; }
递归解法
public ListNode swapPairs(ListNode head) { if(head == null || head.next == null){ return head; } ListNode next = head.next; head.next = swapPairs(next.next); next.next = head; return next; }