public class SwapPairsMain { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ListNode t = new ListNode(11); ListNode t1 = new ListNode(12); ListNode t2 = new ListNode(13); ListNode t3 = new ListNode(14); ListNode t4 = new ListNode(15); ListNode t5 = new ListNode(16); ListNode t6 = new ListNode(17); ListNode t7 = new ListNode(18); ListNode t8 = new ListNode(19); ListNode t9 = new ListNode(21); ListNode t10 = new ListNode(31); t.next = t1; t1.next = t2; t2.next = t3; t3.next = t4; t4.next = t5; t5.next = t6; t6.next = t7; t7.next = t8; t8.next = t9; t9.next = t10; ListNode res = swapPairs(t); while(res != null){ System.out.print(res.val + " "); res = res.next; } System.out.println(); } public static ListNode swapPairs(ListNode head) { ListNode res = head; ListNode p = head; ListNode q = head; int i = 0; while (head.next != null) { p = head.next; q = head.next.next; p.next = head; System.out.println(head.val); head.next = q; System.out.println(q.val); head = q; if (i == 0) { res = p; i++; } } return res; } }
作了將近一個小時才提交經過(下面的),以前打算用循環來作的,不過會丟失數據(如上面所示):
java
public class Solution { public ListNode swapPairs(ListNode head) { ListNode p = head; ListNode q = head; if(head == null){ return head; }else if(head.next == null){ return head; }else{ p = head.next; q = head.next.next; p.next = head; head.next = swapPairs(q); return p; } } }