數據結構 - 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. javascript - 如果所有請求都放到actions 里面,那拿到的數據應該 放在哪里,state 還是vue實例里面的data?2. html - eclipse 標簽錯誤3. 求大神幫我看看是哪里寫錯了 感謝細心解答4. php自學從哪里開始?5. javascript - JS設置Video視頻對象的currentTime時出現了問題,IE,Edge,火狐,都可以設置,反而chrom卻...6. javascript - 數組原聲方法中的一段代碼7. 數據庫 - MySQL 單表500W+數據,查詢超時,如何優化呢?8. javascript - 怎么實現移動端頁面滑動切換,從1可以滑到2 但是不能從2滑回1 這樣的效果呢?9. phpstady在win10上運行10. phpstudy v8打開數據庫就出錯,而phpstudy 2018不會
