迴圈佇列相對於佇列特點在於出隊時隊內元素不用依次移位,多維護了兩個變數front和tail,front指向隊首而tail指向隊尾元素。
現在一起來實現一下迴圈佇列吧!
迴圈佇列的基本操作有:
public
class
loopqueue
public
loopqueue()
// 入隊操作
public
void
enqueue
(e element)
data[tail]
=element;
tail=
(tail+1)
%data.length;
size++;}
// 出隊操作
public e dequeue()
// rem=remain
e rem=data[front]
;//物件陣列儲存的是引用,這一步操作不至於使儲存的引用所指向的物件一直占用空間
data[front]
=null;
front=
(front+1)
%data.length;
size--;if
(size==
getcapacity()
/4&&getcapacity()
/2!=0
)return rem;
}private
void
resize
(int newcapacity)
front=0;
tail=size;
data=newdata;
}public
boolean
isempty()
public
intgetsize()
public
intgetcapacity()
public e getfront()
return data[front];}
@override
public string tostring()
} buffer.
("] tail");
return buffer.
tostring()
;}//測試用例
public
static
void
main
(string[
] args)}}
}
手動實現迴圈佇列
思路 核心思路 給陣列預留乙個位置不存放資料。防止隊空和隊滿的判定條件一樣 陣列實現迴圈佇列 入隊 隊滿條件 head 1 arr.length tail 沒有滿的時候入隊,並且tail後移 tail tail 1 arr.length 出隊 隊空條件 head tail head出隊,後移head...
迴圈佇列 622 設計迴圈佇列
設計你的迴圈佇列實現。迴圈佇列是一種線性資料結構,其操作表現基於fifo 先進先出 原則並且隊尾被連線在隊首之後以形成乙個迴圈。它也被稱為環形緩衝器。迴圈佇列的乙個好處是我們可以利用這個佇列之前用過的空間。在乙個普通佇列裡,一旦乙個佇列滿了,我們就不能插入下乙個元素,即使在佇列前面仍有空間。但是使用...
手動實現鏈式佇列
public class linkqueue 對頭 private entryfort 隊尾 private entryrear 佇列的長度 private int count public linkqueue 入隊操作採用尾插法 param val public void offer t val ...