Java集合框架之如何用LinkedList實現簡單的棧和隊列

LinkedList是List接口實現,用它實現棧和隊列就不得不提它的實現原理,原理如下

     數據存儲是基於雙向鏈表實現的。

     插入數據很快。先是在雙向鏈表中找到要插入節點的位置index,找到之後,再插入一個新節點。 雙向鏈表查找index 位置的節點時,有一個加速動作:若index < 雙向鏈表長度的1/2,則從前向後查找; 否則,從後向前查找。

     刪除數據很快。先是在雙向鏈表中找到要插入節點的位置index,找到之後,進行如下操作:node.previous.next = node.next;node.next.previous = node.previous;node = null 。查找節點過程和插入一樣。

     獲取數據很慢,需要從Head節點進行查找。

     遍歷數據很慢,每次獲取數據都需要從頭開始。

     首先是棧的實現,棧是先進後出就像一摞洗好的碟子,放取都是在最上邊的因此只能對鏈表的頭或尾之一進行操作代碼如下

Java集合框架之如何用LinkedList實現簡單的棧和隊列

其中的push、peek、poop方法中的也可以同時對鏈表尾部進行操作。隊列遵循的是先進先出的原則就像自來水管先流進的水總是先流出 代碼如下

Java集合框架之如何用LinkedList實現簡單的棧和隊列

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章