手動設計實現迴圈佇列

2021-10-01 21:51:14 字數 1275 閱讀 7190

迴圈佇列相對於佇列特點在於出隊時隊內元素不用依次移位,多維護了兩個變數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 ...