實現迴圈佇列

2021-06-10 02:30:04 字數 593 閱讀 1352

利用陣列實現迴圈佇列,head == tail並不能判斷佇列空與滿,需要另外加上乙個輔助

#include#include#includeusing namespace std;

typedef struct node

node;

#define len 20

typedef int elemtype;

class queue

int enqueue(elemtype e)

q[tail] = e;

tail = (tail + 1) % len;

if(head == tail)flag = 1;

return 0;

}int dequeue(elemtype &e)

e = q[head];

head = (head + 1) % len;

if(head == tail) flag = 0;

return 0;

}};int main()

else

system("pause");

}return 0;

}

迴圈佇列實現

迴圈佇列就是當資料寫到結尾後,在回到開頭接著寫,該過程類似迴圈鍊錶。如何實現這個到結尾後又轉到開頭呢?很簡單,取模操作!上兩個圖是迴圈佇列的兩種狀態,以下所寫的所有函式都可以對照著這兩幅圖來看。如下 filename buffer.h ifndef buffer h define buffer h ...

迴圈佇列實現

假設是長度為5的陣列,初始狀態,空佇列如所示,front與 rear指標均指向下標為0的位置。然後入隊a1 a2 a3 a4,front指標依然指向下標為0位置,而rear指標指向下標為4的位置。出隊a1 a2,則front指標指向下標為2的位置,rear不變,如下圖所示,再入隊a5,此時front...

迴圈佇列實現

假設有n個資料採集執行緒負責採集資料,有1個入庫執行緒負責往資料庫寫資料,由於採集執行緒和入庫執行緒是非同步的,所以中間需要乙個快取區來作為採集執行緒和入庫執行緒之間通訊的橋梁,所以引入了迴圈佇列。假設有n個採集執行緒,1個入庫執行緒,架構圖如下 注意 1 由於採集執行緒入隊時,操作的是隊尾,有n個...