數據結構 - java翻轉鏈表是如何實現的?
問題描述
public class Node { public int value; public Node next; public Node(int data) {this.value = data; } public Node reverse(Node head) {Node pre = null;Node next = null;while (head != null) { next = head.next; head.next = pre; pre = head; head = next;}return pre; }
這段代碼while循環中他是如何翻轉的?想要詳細一點的,debug了幾次還是沒弄懂具體是怎么回事
問題解答
回答1:參考一下,理解目的就比較好理解了。容易混亂的地方就是從右往左來處理,因為得先把后面的東西存起來,不然被覆蓋掉就丟了。
prehead +----+ +----+ +> +----+| | | | | | || | | | | | || | | | | | |+----+ +----+ | +----+| | | | | | || | | | | | |+----+ +-+--+ | +----+ | | +-----+ prehead nextnext = head.next;+----+ +----+ +> +----+| | | | | | || | | | | | || | | | | | |+----+ +----+ | +----+| | | | | | || | | | | | |+----+ +-+--+ | +----+ | | +-----+ prehead next+----+ <+ +----+ +----+| | | | | | || | | | | | || | | | | | |+----+ | +----+ +----+| | | | | | || | | | | | |+----+ | +-+--+ +----+| | head.next = pre;+----+ next preheadpre = head;+----+ <+ +----+ +----+ head = next;| | | | | | || | | | | | || | | | | | |+----+ | +----+ +----+| | | | | | || | | | | | |+----+ | +-+--+ +----+| |+----+回答2:




Ps:建議先多了解一下鏈表
相關文章:
1. 運行python程序時出現“應用程序發生異常”的內存錯誤?2. 在mac下出現了兩個docker環境3. 利用IPMI遠程安裝centos報錯!4. spring-mvc - spring-session-redis HttpSessionListener失效5. javascript - QQ第三方登錄的問題6. 測試自動化html元素選擇器元素ID或DataAttribute [關閉]7. javascript - node得到req不能得到boolean8. javascript - 最近用echarts做統計圖時遇到兩個問題!!9. java - Spring boot 讀取 放在 jar 包外的,log4j 配置文件,系統有創建日志文件,不寫入日志信息。10. javascript - 在 model里定義的 引用表模型時,model為undefined。

網公網安備