注意: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, 重要的實現類為arraydeque和linkedlist類
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...