java演算法,佇列為空和已滿

時間 2021-07-21 03:38:37

1樓:匿名使用者

顯然這是個迴圈佇列。迴圈佇列除了普通佇列的fifo特點以外,還有已經出佇列後空閒的空間可以再次利用儲存後續資料。

但因為有這個特點,根據進佇列和出佇列的次序,會產生這樣的情況:佇列空時和佇列滿時,佇列首尾指標rear、front情況完全相同。所以,無法直接判斷佇列空還是滿。

解決方法有兩種:

一種是額外設定一個booean型變數,標識是否是空。

進佇列時,將它置為true。出佇列時,如發生上面指標情況,將它置false。

那麼檢查佇列空或滿就是對這個輔助變數與指標情況共同判斷。

另一種方法是永遠保留一個空閒位置。這樣空和滿的時候,兩個指標的情況就不一樣了。

你的這個程式是後一種處理方式。

至於將指標情況定義為什麼關係表示空滿,各人有各人的方法。

看一下我做的迴圈佇列類,稍有變化。

public class quque

public void enqueue(long value)

data[rear++]=value;

rear%=capacity;

}public long dequeue()

long value=data[front++];

front%=capacity;

return value;

}public long peek()

return data[front];

}public boolean isempty()

public boolean isfull()

public int getcapacity()

public int getsize()}

2樓:星知魂

這個是一個用陣列模擬佇列的做法.

佇列有個特點,先進先出.

front和rear可以看到兩個標記 fornt 是指最選進入的那個,rear是指最後入隊的那個

當 最後一個=最前一個那就是空

當最後一個的下一個=最前一個那就是滿了,這很好理解呀,後面兩個條件,你可以自己去推一下

還有疑問 [email protected]/shmilyhe

3樓:匿名使用者

空size fornt rear9 0 -1| |

--------------------

| |

--------------------

有資料:

size fornt(rear)9 0

| |

--------------------

| *

--------------------

有資料:

size rear fornt9 2 0

| | |

--------------------

| * * *

--------------------

滿:size(rear) fornt9 0

| |

--------------------

|* * * * * * * * * *

--------------------

4樓:匿名使用者

沒看出來嗎,這是一個環形對列。-1與maxsize-1是重合的.

C語言中連結串列與佇列有很麼區別,C語言佇列,連結串列分別怎麼用?

樓主你好。連結串列是一種資料結構,而佇列是一種抽象的概念,就像棧一樣。船是一個比較抽象的概念,具體實現有木船 鐵船等等。佇列好比是船,連結串列好比是造船的材料。佇列可以用連結串列實現,也可以用動態陣列實現,這個抽象的概念可以用各種具體的資料結構實現。sqqueue的第一個元素elemtype ele...

簡便演算法 1 25 16 ,簡便演算法 1 25 16

高不成低不就 1.25 16 2.5 1.25 4 4 2.5 5 10 502.乙隊修了 2.5 1 25 2千米全長 2.5 2 4.5千米 3.一共5個44,2個56,1個42,5個48,2個52,1個50平均數就是和除以個數 5 44 2 56 1 42 48 5 52 2 50 1 768...

演算法指什麼,演算法設計有什麼指標,演算法設計有哪些方法

通俗講就是解決問題的方法,用到計算機裡,一般指程式設計中用到演算法比較多。也是考研的時候計算機系的一個重點。演算法是在有限步驟內求解某一問題所使用的一組定義明確的規則。通俗點說,就是計算機解題的過程。在這個過程中,無論是形成解題思路還是編寫程式,都是在實施某種演算法。前者是推理實現的演算法,後者是操...