- Go程序員面試算法寶典
- 猿媛之家組編 董良松 楚秦等編著
- 332字
- 2019-09-16 15:11:49
1.12 如何展開鏈接列表
難度系數:★★★★☆
被考查系數:★★★☆☆
題目描述:
給定一個有序鏈表,其中每個結點也表示一個有序鏈表,結點包含兩個類型的指針:
(1)指向主鏈表中下一個結點的指針(在下面的代碼中稱為“正確”指針)。
(2)指向此結點頭的鏈表(在下面的代碼中稱之為“down”指針)。
所有鏈表都被排序。請參見以下示例:

實現一個函數flatten(),該函數用來將鏈表扁平化成單個鏈表,扁平化的鏈表也應該被排序。例如,對于上述輸入鏈表,輸出鏈表應為3->6->8->11->15->21->22->30->31->39->40->45->50。
分析與解答:
本題的主要思路為使用歸并排序中的合并操作,使用歸并的方法把這些鏈表來逐個歸并。具體而言,可以使用遞歸的方法,遞歸地合并已經扁平化的鏈表與當前的鏈表。在實現的過程可以使用down指針來存儲扁平化處理后的鏈表。實現代碼如下:



程序運行結果為

推薦閱讀
- Mobile Application Development:JavaScript Frameworks
- 自制編譯器
- Android項目開發入門教程
- Python從小白到大牛
- Functional Programming in JavaScript
- Functional Kotlin
- Windows Server 2016 Automation with PowerShell Cookbook(Second Edition)
- CoffeeScript Application Development Cookbook
- C語言從入門到精通
- Java程序員面試筆試寶典(第2版)
- 大話Java:程序設計從入門到精通
- C++從入門到精通(第6版)
- Robot Framework Test Automation
- 軟件測試分析與實踐
- Python應用開發技術