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