數組模擬循環隊列有效長度計算公式推導(個人理解)


關於數組模擬循環隊列的有效長度的計算公式,自己參考了一些博客和書上的描述,寫了一段推導過程。

 

1.准備

front 就指向隊列的第一個元素, 也就是說 arr[front] 就是隊列的第一個元素。
front 的初始值 = 0。
rear 指向隊列的最后一個元素的后一個位置.,因為希望空出一個空間做為約定。
rear 的初始值 = 0。
arrSize為循環數組長度。
 

2.推導

由於循環隊列可循環使用,所以循環隊列的有效長度為分為兩種情況:

  1.rear > front

  有效長度 = rear - front

  2.rear < front

  有效長度 = front - rear

簡而言之就是有效長度為rear與front之間差的絕對值,有效長度 = | rear - front |。

但是計算機中無法使用取絕對值的運算,但是可以利用取模運算符巧妙地實現有效長度的運算:

  有效長度 = | rear - front | = | rear % arrSize - front % arrSize | =  | rear % arrSize - front % arrSize + 0 |  =  | rear % arrSize - front % arrSize  + arrSize % arrSize | = | (rear + arrSize - front) % arrSize | 

  由於rear + arrSize - front > 0,所以

                有效長度 =  (rear + arrSize - front) % arrSize 


免責聲明!

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



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