資料結構 迴圈佇列的實現與應用舉例 報數問題

2021-10-09 17:19:57 字數 859 閱讀 5383

迴圈佇列是一種常見的佇列實現方式,各個資料元素依次儲存,並設定兩個指標,分別指向隊頭和隊尾,在插入和刪除資料時,隊頭指標和隊尾指標會迴圈使用儲存空間。應用佇列可以解決報數問題。

報數問題:設有n個人站成一排,從左向右的編號分別為1~n, 現在從左向右報數「1,2,1,2,1,2….」,數到」1」的人出列,數到」2」的人站到隊伍最右邊。報數過程反覆進行,直到n個人都出列為止。

分析:可以建立乙個佇列儲存各個資料。左邊相當於隊頭,右邊相當於隊尾。左邊的人報數相當於從佇列中取出隊頭元素並刪除隊頭元素。站到隊伍的最右邊相當於在隊尾插入乙個資料。為實現1,2,1,2,1,2….報數,可以設定乙個計數器變數count,count每次加1,count%2交替等於1和0,count%2等於1相當於報數1,count%2等於0相當於報數2。

此程式在vc++6.0 和 dev-c++下編譯通過。

#include "stdio.h"

#include "stdlib.h"

#define maxqsize 100 //最大佇列長度

typedef struct

sqqueue;

int initqueue (sqqueue &q)

void destroyqueue(sqqueue &q)

int queueempty(sqqueue q)

int enqueue(sqqueue &q, int e)

int dequeue(sqqueue &q, int &e)

void baoshu(int n)

printf("\n");

destroyqueue(q);}

int main()

資料結構 迴圈佇列的實現

介面 package com.company.queue queue 佇列介面 author heng public inte ce queue實現類 package com.company.queue loopqueue 迴圈佇列的實現 迴圈佇列需要從底層寫起 不再用array類了 author ...

資料結構 佇列 迴圈佇列 陣列實現

佇列是一種特殊的 線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 tail 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。以陣列實現的佇列結構,如果是普通佇列,頻繁增刪元素,會造成陣列記憶體空間的大量流失,所...

資料結構與演算法 佇列 迴圈佇列

部分內容來自於 資料結構 c語言版 清華大學出版社,嚴蔚敏 吳偉民 編著 如果我們將佇列設定為順序儲存結構,那麼,因為出隊的時候是從隊首出隊,入隊的時候是從隊尾入隊,而入隊需要在後面的記憶體中開闢空間,一直這樣總會把所有的記憶體耗盡.雖然我們在出隊的時候會釋放空間,但是釋放的空間是在靠前的記憶體位址...