如何解決環形佇列總是要浪費乙個位置的問題?

2021-10-24 16:30:06 字數 1529 閱讀 1316

/*如何解決環形佇列始終要浪費乙個位置的問題?

1.首先我們知道這個空著的位置是用來幹嘛的,

佇列有兩個指標,乙個指向佇列頭front,乙個指向佇列尾rear,

每次增加乙個佇列元素:rear+1; 每次出隊乙個元素:front+1.

所以佇列的長度大小就是rear-front.

2.但是在迴圈佇列中,如果還是用rear-front,就會有乙個問題出現,

當兩個指標指向同乙個位置的時候,我們無法判斷到底是隊空還是隊滿。

3.所以,我們可以另外設定乙個tag值,用tag值來判斷隊空和隊滿.

4.當rear指標指向的下乙個位置不為空時,插入資料,再令tag值為1,即判斷為隊滿。

*///circular queue 迴圈佇列實現

#include

#include

#define maxsize 3

typedef

int elemtype ;

typedef

struct

circularqueue;

static

int tag =0;

//判斷佇列是否還有空位置

void

isempty

(circularqueue *q,elemtype e)

else

}//初始化佇列

void

initqueue

(circularqueue *q)

//入佇列操作

void

insertqueue

(circularqueue *q, elemtype e)

q->rear =

(q->rear +1)

% maxsize;

//尾部元素指向下乙個空間位置,取模運算保證了索引不越界(餘數一定小於除數)

}//出佇列操作

bool

deletequeue

(circularqueue *q, elemtype *e)

else

}//展示佇列元素

void

showqueue

(circularqueue *q)

while

(i != q-

>rear)

;printf

("\n");

}int

main()

else

break

;case2:

;if(deletequeue

(&que,

&elem)==1

)break

;case3:

showqueue

(&que)

;break

;case4:

flag =

false

;break

;default

:printf

("輸入錯誤!\n");

break;}

}return0;

}

postman如何解決下個介面依賴上乙個介面資料

解決思路 將上乙個介面返回的資料儲存起來,然後提供下個介面使用,postman中通過設定全域性變數來儲存資料 步驟1 在tests中新增如下圖js var jsondata json.parse responsebody json.parse 方法將響應的結果responsebody轉換成乙個物件,...

C 筆記 實現乙個環形阻塞佇列

環形阻塞佇列,顧名思義,首先,它是乙個佇列,然後,它應當是乙個環形,並且它是會進行阻塞的。但是根據我們的常識,記憶體位址是用乙個long long int來儲存的,我們儲存的資料的位址無法繞成乙個環,所以我們想要成環的話,需要我們自己去處理。如上圖,相比環狀實現的來說,資料在記憶體中的儲存更接近線性...

Python如何解除乙個裝飾器

問題 乙個裝飾器已經作用在乙個函式上,你想撤銷它,直接訪問原始的未包裝的那個函式。解決方案 假設裝飾器是通過 wraps 來實現的,那麼你可以通過訪問 wrapped 屬性來訪問原始函式 somedecorator def add x,y return x y orig add add.wrappe...