佇列 , 雙端佇列, 棧

2021-08-19 07:00:43 字數 1768 閱讀 8630

注意:linkedlist中新增或者取出的方法有很多, 比如add, offer,offerfirst,offerlast, push. 根據使用的資料結構不同,最好區分使用.

一, 佇列queue  fifo(first in first out)

0, 模型上一般為右進左出, 右端入隊並稱為隊尾, 左端出隊並稱為隊頭

1. 佇列queue介面繼承了collection介面. 和list介面, set介面同乙個級別.

2. queue的重要實現類linkedlist, 當然linkedlist也實現了list介面.

3. 雙端佇列deque介面繼承自queue介面.

4.獲取乙個佇列例項

queuequeue = new linkedlist();
5. 使用linkedlist中的offer方法入隊 , 使用poll方法出隊(取出並返回) , 使用peek獲得隊頭(檢視不取出)

二 , 雙端佇列deque

0,模型上, 左端為first,右端為last

1, 雙端佇列模型上是兩端都可以進出.

2 , 雙端佇列deque繼承了佇列queue介面

3, 重要的實現類為arraydequelinkedlist

4, linkedlist大小可變的鍊錶雙端佇列, 允許元素為null

5, arraydeque大小可變的陣列雙端佇列, 不允許元素為null

6, 併發場景下用linkedblockingdeque實現類, 如果隊列為空時, 獲取操作將會阻塞, 直到有元素新增.

7.獲取乙個deque例項:

dequedeque = new arraydeque();

dequedeque = new linkedlist();

8,從左端入隊為offerfirst(offer可以實現同樣效果,不建議使用); 從右端入隊為offerlast9.從左端出隊為pollfirst(poll可以實現同樣效果,不建議使用); 從右端出隊為polllast

三 , 棧stack    lifo(last in first out)

1 , 如果將雙端佇列的一端堵死, 就形成了棧資料結構 ,所以只要放棄deque一端的入隊和出隊即可, 

2 , 並推薦offerfirst方法入棧 ,pollfirst方法出棧

3 , 獲取乙個棧的例項:

dequestack = new linkedlist();
4 , 入棧的方法為push, 出隊的方法為pop.

棧 佇列 雙端佇列

棧 stack 有些地方稱為堆疊,是一種容器,可存入資料元素 訪問元素 刪除元素,由於棧資料結構只允許在一端進行操作,因而按照後進先出 lifo,last in first out 的原理運作。棧結構實現 棧可以用順序表實現,也可以用鍊錶實現。棧的操作 功能stack 建立乙個新的空棧 push i...

棧 佇列 雙端佇列

一 棧結構實現 class stack object 棧 def init self self.items defis empty self 判斷是否為空 return self.items defpush self,item 加入元素 defpop self 彈出元素 return self.it...

棧和佇列及雙端佇列

棧 棧只允許在一端進行操作,所以是後進先出即lifo 可以用順序表實現,也可以用鍊錶實現 以下為用順序表實現的 coding utf 8 class stack object 棧 def init self self.list defpush self,item 新增乙個新的元素item到棧頂 de...