循環隊列判滿和判空的兩種方式


  在循環隊列中,Q.front表示對頭,Q.rear表示隊尾。因為隊列大小是有限的,所以在隊列指針移動的時候,會出現到頭的情況,這時候需要指針回到起點。

所以入隊時Q.rear=Q.rear+1%Maxsize,出隊時,Q.front=Q.front+1%Maxsize.而如果一個隊列是如下這種結構

 

  • 在這種結構下,當出現隊列滿和隊列空的情況,這兩種情況是一樣的,Q.rear=Q.front.為空,一直移除,Q.front一直與rear接近在這種結構下,當出現隊列滿和隊列空的情況,這兩種情況是一樣的,Q.rear=Q.front.為空,一直移除,Q.front一直與rear接近,入隊時,一直增大rear,直到等於front。在這種情況下,是無法判斷誰是空,誰是滿,所以有了另外的一些小處理。

  • 在這兩種結構下都是隊列滿,但是第二種是Q.rear指向空,下一位是Q.front才代表隊列滿。所以犧牲了一個空間,而這種情況下,Q.rear=Q.front代表隊列空,也就區分開了,還可以把Q.front指向空下一位是第一個元素,這樣的話,就會出現Q.front下一位是Q.rear代表空,而Q.rear=Q.front代表隊列滿,這與剛剛的方式是相反的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM