隊列 -- 循環隊列
實現隊列的方法有很多,比如鏈表,動態數組等,這裏主要介紹一下循環隊列,首先我們用靜態數組做個簡單的隊列:
從上圖很顯然可以看出,全部出隊後,將無法繼續入隊,這樣的情況也叫做“假溢出”,即使數組中,明明還有空間可以利用,但是卻無法使用。爲了解決這樣的問題,就引入了一個叫“循環隊列”這麼一個方法。那麼什麼叫循環隊列呢?
循環隊列定義:爲了克服順序隊列中假溢出,通常將一維數組Queue[0]到Queue[MAXSIZE - 1]看成是一個首尾相連接的圓環,即Queue[0]與Queue[MAXSIZE - 1]相連接在一起,將這樣形式的隊列成爲循環隊列。
S1循環隊列示例圖:
S2循環隊列各個參數的含義:
1)隊列初始化
front和rear的值都是零。
2)隊列非空
front代表的是隊列的第一個元素。
rear代表的是隊列的最後一個元素的下一個元素。
3)隊列空
front和rear的值相等,不一定爲零。
S3循環隊列入隊的僞算法:
1)將值存入rear所代表的位置。
2)rear = (rear + 1) % 數組的長度。
S4循環隊列出隊的僞算法:
1)取出front所代表位置的值。
2)front = (front + 1) % 數組長度。
S5如何判斷循環隊列爲空:
1)如果front與rear的值相等,那麼該循環隊列爲空隊列。
S6如何判斷循環隊列已滿:
1)通常使用兩種方式
1.多增加一個標識參數。
2.如果 (rear + 1) % 數組長度 == front 那麼,已滿。
S7循環隊列部分代碼
從上圖很顯然可以看出,全部出隊後,將無法繼續入隊,這樣的情況也叫做“假溢出”,即使數組中,明明還有空間可以利用,但是卻無法使用。爲了解決這樣的問題,就引入了一個叫“循環隊列”這麼一個方法。那麼什麼叫循環隊列呢?
循環隊列定義:爲了克服順序隊列中假溢出,通常將一維數組Queue[0]到Queue[MAXSIZE - 1]看成是一個首尾相連接的圓環,即Queue[0]與Queue[MAXSIZE - 1]相連接在一起,將這樣形式的隊列成爲循環隊列。
S1循環隊列示例圖:
S2循環隊列各個參數的含義:
1)隊列初始化
front和rear的值都是零。
2)隊列非空
front代表的是隊列的第一個元素。
rear代表的是隊列的最後一個元素的下一個元素。
3)隊列空
front和rear的值相等,不一定爲零。
S3循環隊列入隊的僞算法:
1)將值存入rear所代表的位置。
2)rear = (rear + 1) % 數組的長度。
S4循環隊列出隊的僞算法:
1)取出front所代表位置的值。
2)front = (front + 1) % 數組長度。
S5如何判斷循環隊列爲空:
1)如果front與rear的值相等,那麼該循環隊列爲空隊列。
S6如何判斷循環隊列已滿:
1)通常使用兩種方式
1.多增加一個標識參數。
2.如果 (rear + 1) % 數組長度 == front 那麼,已滿。
S7循環隊列部分代碼
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.