資料結構 佇列 迴圈佇列

2021-07-30 15:47:34 字數 1081 閱讀 5900

/*

*資料結構(佇列):迴圈佇列

*順序儲存

*犧牲乙個空間單元來判段佇列滿狀態。q.front == (q.rear+1)%initsize

*date:2017/4/16

*/#include #define elemtype char

#define initsize 100

typedef structsqqueue;

void initqueue(sqqueue &q); //初始化佇列

bool emptyqueue(sqqueue q); //判空操作

bool isfullqueue(sqqueue q); //判斷佇列q是否滿了

void enqueue(sqqueue &q,elemtype e); //入隊

void dequeue(sqqueue &q,elemtype &e); //出隊

void gethead(sqqueue q,elemtype &e); //獲取隊頭元素值

void printqueue(sqqueue q); //列印佇列

void clearqueue(sqqueue &q); //清空佇列

void initqueue(sqqueue &q) }}

bool emptyqueue(sqqueue q)else

}bool isfullqueue(sqqueue q)else

}void enqueue(sqqueue &q,elemtype e)

}void dequeue(sqqueue &q,elemtype &e)

}void gethead(sqqueue q,elemtype &e)

void printqueue(sqqueue q)

printf("\n");

}void clearqueue(sqqueue &q)

int main()else

clearqueue(q);

if(emptyqueue(q))else

return 0;

}

in.txt:

peer

資料結構 佇列 迴圈佇列

在佇列的陣列實現中,我們很容易發現數在出隊後,陣列的前面部分會有剩餘空間沒有被使用,所以我們為了最大程度的利用固定長度的陣列,我們採用迴圈佇列的儲存方式,這種方式的最大問題在於resize的時候比較麻煩,所以我們不考慮resize的情況。基本結構如下,這裡front指向第乙個元素的位置,rear指向...

mysql迴圈佇列 資料結構 迴圈佇列

資料結構 迴圈佇列 寫在前面 陣列表示的問題 對於佇列最好的方法是使用鍊錶實現,因為對於陣列來說,佇列可能會出現下面這種情況 如圖所示,不可以繼續新增元素,否則會造成陣列越界而遭致程式出錯。然而此時又不應該擴充陣列,因為還有大量實際空間未被占用。此時我們應該如何解決這個問題呢?我們將其實現為迴圈佇列...

資料結構 佇列和迴圈佇列

線性結構 只能從一端新增元素,從另外一端取出元素 先進先出 fifo 時間複雜度o 1 出隊時間複雜度o n public class arrayqueueimplements queue public arrayqueue override public int getsize override ...