兩兩交換鏈表中的節點(LeetCode--24.兩兩交換鏈表中的節點)

題目描述

給定一個鏈表,兩兩交換其中相鄰的節點(結點進行交換而不是簡單地進行值交換),并返回交換后的鏈表。

示例:
輸入:1->2->3->4
輸出:2->1->4->3

解析

實現技巧:遞歸實現
實現方法

如果利用調整指針的方式完成鏈表的交換會產生大量的指針交換操作,難度較大。
這里介紹遞歸實現:

  • 鏈表每次交換前兩個結點
  • 后面n-2個結點作為新的鏈表遞歸實現
  • n-2結點的結果放到前兩個結點的鏈表后面
遞歸實現代碼
public ListNode swapPairs(ListNode head) {
    if(head == null || head.next == null){//遞歸判斷條件,如果無結點或者只有一個結點直接返回
        return head;
    }
    /*取出前兩個結點*/
    ListNode first = head;
    ListNode second = head.next;
    /*head指向新的鏈表*/
    head = second.next;
    /*前兩個結點交換位置*/
    second.next = first;
    /*head鏈表的結果鏈接到前兩個結點鏈表后面*/
    first.next = swapPairs(head);
    /*返回結果*/
    return second;
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一些概念 數據結構就是研究數據的邏輯結構和物理結構以及它們之間相互關系,并對這種結構定義相應的運算,而且確保經過這...
    Winterfell_Z閱讀 5,900評論 0 13
  • 1)這本書為什么值得看: Python語言描述,如果學的Python用這本書學數據結構更合適 2016年出版,內容...
    孫懷闊閱讀 12,586評論 0 15
  • (一)LeetCode206.反轉鏈表 題目描述: 反轉一個單鏈表。 代碼實現 (二)LeetCode160. 相...
    Jarily閱讀 1,417評論 0 5
  • 轉載請注明出處:http://www.lxweimin.com/p/c65d9d753c31 在上一篇博客《數據結構...
    Alent閱讀 3,528評論 4 74
  • 1 大學一二年級體育是必修課,但課程是可自選的。但此時,全校同學都在選,一定要下手快,否則就會像Z同學那樣悲催。 ...
    岳檸檬閱讀 847評論 0 2