LinkedList作為棧和隊列的使用


最近在LeekCode用java寫一些算法時,經常遇到要使用棧和隊列結構,使用棧的話,Stack已經不被推薦使用了,所以棧和隊列我們通常都是用LinkedList這種雙鏈表結構實現。Linkedlist是一個雙向鏈表,操作起來非常方便,java也封裝了很多的方法在這個雙向鏈表里面。

題目:(1) 使用棧,LeekCode中20題 --有效括號

   (2) 劍指 Offer 09. 用兩個棧實現隊列

Deque表示雙端隊列。雙端隊列是在兩端都可以進行插入和刪除的隊列。Deque是一個比Stack和Queue功能更強大的接口,它同時實現了棧和隊列的功能。ArrayDeque和LinkeList實現了Deque接口。

注意:Deque既可以用作后進先出的棧,也可以用作先進先出的隊列。

作為棧使用時

push() :在堆棧的頂部加入一個元素。

pop() :刪除並返回此雙端隊列的第一個元素(棧頂)。

peek() :返回此雙端隊列的第一個元素。

棧示例

作為隊列使用時

peek() :返回此雙端隊列的第一個元素。

poll() :返回並刪除隊列中的第一個元素。

offer():往隊列中添加一個元素

 隊列示例

LinkedList實現隊列有兩種用法

①直接使用LinkedList提供的offer和poll來實現出隊、入隊、取隊頭

②LinkedList實現了Deque接口,Deque繼承自Queue,所以可以使用父類指向子類的方式來訪問子類方法從而實現隊列。

 

希望本文章對您有幫助,您的轉發、點贊是我的創作動力,十分感謝。

掃描下方二維碼關注微信公眾號,您會收到更多優質文章推送。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM