1. 程式人生 > >LintCode之兩兩交換鏈表中的節點

LintCode之兩兩交換鏈表中的節點

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之兩兩交換鏈表中的節點