最近在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,所以可以使用父類指向子類的方式來訪問子類方法從而實現隊列。
希望本文章對您有幫助,您的轉發、點贊是我的創作動力,十分感謝。
掃描下方二維碼關注微信公眾號,您會收到更多優質文章推送。

