4迴圈佇列的順序表示中,為什麼要空乙個位置?

2021-10-05 16:30:04 字數 427 閱讀 6286

我們先講一下迴圈佇列的概念:

首先是佇列的概念,這個大家都很清楚。佇列就是乙個線性表。

迴圈佇列就是頭尾相連的佇列。

那麼在普通的佇列中我們怎麼區別佇列中有多少個元素的呢?

佇列裡有兩個指標:

乙個指向佇列頭front,乙個指向佇列尾rear。每次增加乙個佇列元素,rear+1。每次出隊乙個元素 front +1。

佇列的長度大小就是rear-front。

但是在迴圈佇列中,如果還是用rear-front,就會有乙個問題出現,就是兩個指標指向同乙個的時候,你無法區分是因為佇列是空的,還是rear已經繞了一圈回來了(即隊滿的情況)。so我們要加乙個空的位置,這個位置不放任何元素,作用就是為了區別隊空和隊滿。如果隊空的情況下,rear-front=0。

隊滿的情況下,rear-front!=0,得出的答案是真正的佇列長度。

順序佇列的假溢位及順序迴圈佇列的表示(C 版)

順序佇列的假溢位 按照前面所說的順序佇列的儲存方法 有可能造成 假溢位 這種溢位不是因為儲存空間不夠而溢位,而是經過多次插入和刪除操作引起的,像這種有儲存空間而不能進行插入的元素操作的溢位稱為 假溢位 為了避免順序佇列造成的 假溢位 現象,通常採用順序迴圈佇列來實現佇列的順序儲存。順序迴圈佇列的定義...

資料結構 5 迴圈佇列 佇列的順序表示和實現

語言 c 編譯環境 visual c 6.0 迴圈佇列 佇列的順序表示和實現 include define ok 1 define error 0 define overflow 2 status是函式返回值型別,其值是函式結果狀態 typedef int status 自定義資料型別別名 type...

資訊量為什麼要表示成對數的形式

近期在路上進行了不少的思考,任何方面,任何領域 我會把這些記錄在手機的備忘錄裡,然後在週末總結出來,早就成了習慣。近日對資訊理論,排隊論以及貝葉斯定理關注比較多,後二者可以完全改造tcp的擁塞控制機制,所以基礎還是要夯實的。本文描述乙個基礎中的基礎,後續我會追加關於對這些基礎背後的一些哲學層面上的思...