LintCode之兩兩交換鏈表中的節點
阿新 • • 發佈:2017-11-01
else pan spa .com node link div 節點 while
題目描述:
我的思路:
由題目描述可知,題目是要求將第一個與第二個節點,第三個與第四節點....進行交換,而進行交換時只用將節點的值進行交換即可。需要註意的是:當鏈表為null或者當鏈表只有一個節點時就沒有可進行交換的另一個節點,就可以直接將該鏈表返回。
我的代碼:
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { val = x; } 7* } 8 */ 9 10 11 public class Solution { 12 /* 13 * @param head: a ListNode 14 * @return: a ListNode 15 */ 16 public ListNode swapPairs(ListNode head) { 17 // write your code here 18 if(head == null) { 19 return null; 20 } 21 if(head.next == null) { 22 return head; 23 } 24 ListNode h = head; 25 ListNode p = head.next; 26 while(p != null) { 27 //交換兩個節點的值 28 int temp = head.val; 29 head.val = p.val; 30 p.val = temp; 31 head = p.next; 32 if(head != null) { 33 p = head.next; 34 }else { 35 p = null; 36 } 37 } 38 return h; 39 } 40 }
以上面的例題為例:
LintCode之兩兩交換鏈表中的節點