介面與類的繼承關係:
雙端佇列:兩端都可以進行入隊和出隊操作的佇列
deque介面—>linkedlist(實現類)方法:
方法解釋
addfirst(e) / ofterfirst(e)
入佇列(頭部元素)
addlast(e) / ofterlast(e)
入佇列(尾部元素)
removefirst() / pool()first
出佇列(頭部元素)
removelast() / poollast()
出佇列(尾部元素)
getfirst() / peekfirst()取元素(不刪除,頭部元素)
getlast() / peeklast()
取元素(不刪除,尾部元素)
注:deque介面·繼承自queue介面,queue介面繼承於collection介面
陣列下標迴圈小技巧:下標最後再往後(offset 小於 array.length): index = (index + offset) % array.length
下標最前再往前(offset 小於 array.length): index = (index + array.length - offset) % array.length
區分迴圈佇列的空與滿: 當 q.rear = q.front 時認為隊空 當 q.rear + 1 = q.front 時認為隊滿例:622. 設計迴圈佇列(leetcode)
class
mycircularqueue
//把value插入迴圈佇列尾部
//成功返回true 失敗(容量滿了)返回false
public
boolean
enqueue
(int value)
array[rearindex]
= value;
size++
; rearindex++;if
(rearindex == array.length)
return
true;}
public
boolean
dequeue()
size--
; frontindex++;if
(frontindex == array.length)
return
true;}
//返回隊首元素
//隊列為空返回-1
public
intfront()
return array[frontindex];}
//返回隊尾元素
//隊列為空返回-1
public
intrear()
if(rearindex ==0)
else
return array[rearindex -1]
;}public
boolean
isempty()
public
boolean
isfull()
}
注1:站和佇列都是一種特殊的線性結構,只是對插入/刪除元素的方式做了限制注2:棧表現出 filo 的特點,佇列表現出 fifo 的特點(add / remove / element
沒有特殊說明時,時間複雜度都是o(1))
注3:時間角度
佇列 雙端佇列
1.佇列 佇列是遵循先進先出 fifo,也稱為先來先服務 原則的一組有序的項。佇列在尾部新增新 元素,並從頂部移除元素。最新新增的元素必須排在佇列的末尾 class queue 向佇列新增元素 enqueue element 檢查佇列是否為空並獲取它的長度 isempty 從佇列移除元素 deque...
習題3 13 雙端佇列(迴圈佇列 迴圈陣列)
題目 push x,d 將元素x插入到雙端佇列d的頭 pop d 刪除雙端佇列d的頭元素,並返回 inject x,d 將元素x插入到雙端佇列d的尾部 eject d 刪除雙端佇列d的尾部元素,並返回。函式介面定義 bool push elementtype x,deque d elementtyp...
設計迴圈雙端佇列
題目描述 設計實現雙端佇列。你的實現需要支援以下操作 mycirculardeque k 建構函式,雙端佇列的大小為k。insertfront 將乙個元素新增到雙端佇列頭部。如果操作成功返回 true。insertlast 將乙個元素新增到雙端佇列尾部。如果操作成功返回 true。deletefro...