Java佇列和棧 Queue和Deque

2021-08-20 22:39:13 字數 2093 閱讀 9564

佇列queue

佇列queue也是collection的乙個子介面

佇列介面,底層是乙個特殊的線性表。從一端新增元素(offer),從另一端取出元素(pop)

遵循原則:fifo(first input,first output)先進先出原則

因為佇列要經常進行增刪操作。因此使用linkedlist鍊錶來實現queue介面更合適效率更高,而不是arraylist

常用api

boolean

add(e e)

從隊尾追加元素

boolean

offer(e e)

從隊尾追加元素

epoll()

返回並移除隊首元素

epeek() 

檢視隊首元素

boolean

isempty()

檢視佇列是否為空

e

remove()   

移除隊首並返回

eremove(e e)

移除佇列中指定的元素(不常用)

deque 雙端佇列

兩端都可進可出(實現類為linkedlist,因為要經常進行增刪操作,所以用鍊錶)

常用api

大部分方法和上面一樣,但還是會有些不同的

boolean

off(e e)

預設從隊尾插入元素

boolean

offlast(e e)

/offfirst(e e)

從隊尾/首插入元素

epoll()

預設移除隊首

epollfirst()

/polllast()

移除對首/尾元素

epeek()

檢視隊首元素

常用api

大部分方法和上面一樣,但還是會有些不同的

boolean

off(e e)

預設從隊尾插入元素

boolean

offlast(e e)

/offfirst(e e)

從隊尾/首插入元素

epoll()

預設移除隊首

epollfirst()

/polllast()

移除對首/尾元素

epeek()

檢視隊首元素

epeekfirst()

/peeklast()

檢視隊首/隊尾元素

練習**:

public static void main(string args)
當我們限制雙端佇列的一端不能進行任何操作時(人為規定的),即為桟stack,進出原則:filo(first input,last output)先進後出

為了更加形象的表示桟,通常不呼叫offer和poll用如下兩個方法:

boolean

push() 按照桟的模式,從隊首開始新增元素

epop() 取出隊首元素

我們如果要是把雙端佇列限制為桟的話,就要按照桟的規定,只能從一端進行進出,在中間及另一端則不能進行操作

/*

*桟:進出原則:先進後出

* 將雙端佇列的一端進行限制:嚴謹進出操作(認為限制)

*/public static void main(string args)

棧(Stack)和佇列(Queue)

棧和佇列是兩種重要的線性結構。從資料結構角度看,棧和佇列也是線性表,其特殊性在於棧和佇列的基本操作是線性表操作的子集,它們是操作受限的線性表,因 此,可稱為限定性的資料結構。但從資料型別角度看,它們是和線性表大不相同的兩類重要的抽象資料型別。由於它們廣泛應用在各種軟體系統中,因此在物件導向 的程式設...

棧stack 和 佇列queue

stl中,sort的預設排序為less,也就是說從小到大排序 priority queue預設是less,也就說大頂堆 map預設是less,也就說用迭代器迭代的時候預設是小的排在前面 set預設是less,也就是說用迭代器迭代的時候是從小到大排序的。棧和佇列的區別是啥?吃多了拉就是佇列,吃多了吐就...

棧(stack)和佇列(queue)

棧的定義 特點 filo 是一種只能在一端進行插入或刪除操作的線性表。其中允許進行插入或刪除操作的一端稱為棧頂 top 棧頂由乙個稱為棧頂指標的位置指示器 對於順序棧,就是記錄棧頂元素所在陣列位置標號的乙個整型變數 對於鏈式棧,就是記錄棧頂元素所在結點位址的指標 來指示,它是動態變化的。表的另一端稱...