元素的演算法
發布時間: 2023-07-27 02:08:10
『壹』 求循環隊列的元素個數演算法,已知front 和 rear,還有容量數,怎麼求隊列中的循環元素個數
如果是用數組實現的 用隊尾減隊頭再模數組長度;如果是鏈表 就要有個計數變數了。
front為對頭指針,rear為對尾指針,n為隊列最大元素個數。隊列元素個數=(rear-front+1+n)%n %是求余數。
循環隊列的元素個數計算公式:
如果rear<front結果是rear-front+maxsize;
如果rear>front結果是rear-front;
為了用一個表達式同時表達兩者,用(rear-front+maxsize)%maxsize;
假設maxsize=10;
rear=1 front=9,那麼結果是2;
rear=9 front=1,那麼結果是8。
(1)元素的演算法擴展閱讀
循環隊列中,由於入隊時尾指針向前追趕頭指針;出隊時頭指針向前追趕尾指針,造成隊空和隊滿時頭尾指針均相等。因此,無法通過條件front==rear來判別隊列是"空"還是"滿"。
解決這個問題的方法至少有兩種:
① 另設一布爾變數以區別隊列的空和滿;
②另一種方式就是數據結構常用的: 隊滿時:(rear+1)%n==front,n為隊列長度(所用數組大小),由於rear,front均為所用空間的指針,循環只是邏輯上的循環,所以需要求余運算。
隊已滿,但是rear(5)+1=6!=front(0),對空間長度求余,作用就在此6%6=0=front(0)。
熱點內容