用c語言實現乙個迴圈佇列並不難。關鍵點在於對佇列 "空" 和 "滿" 狀態的判斷。
正如《c和指標》中所描寫的,有兩種方法來實現對佇列空和滿狀態的判斷。
在陣列中空乙個元素不填,起始時, 置tail為0, front為1, 這樣一來, 實現要浪費queue buffer中兩個元素空間:
佇列空: (tail+1) % queue_size == front
佇列滿: (tail+2) % queue_size == front
定義乙個變數來記錄佇列中元素的個數, 判斷佇列的空和滿直接看變數的值即可
本文中使用的是第2種:
#include #define queue_size 5
#define queue_type int
static int queue_cnt = 0;
static int queue_front = 0;
static int queue_tail = 0;
static queue_type queue_buf[queue_size];
int is_empty()
int is_full()
int insert(queue_type e)
queue_buf[queue_tail] = e;
queue_tail = (queue_tail + 1) % queue_size;
queue_cnt++;
return 1;
}int delete()
queue_front = (queue_front + 1) % queue_size;
queue_cnt--;
return 1;
}int main()
迴圈佇列實現(C語言)
背景 生活中有很多佇列的影子,比如打飯排隊,買火車票排隊問題等,可以說與時間相關的問題,一般都會涉及到佇列問題 從生活中,可以抽象出佇列的概念,佇列就是乙個能夠實現 先進先出 的儲存結構。佇列分為鏈式佇列和靜態佇列 靜態佇列一般用陣列來實現,但此時的佇列必須是迴圈佇列,否則會造成巨大的記憶體浪費 鏈...
迴圈佇列的實現(C語言)
迴圈佇列 vs2010 除錯 include include include define max size 6 define true 1 define false 0 define overflow 0 define ok 1 define error 0 typedef struct seq ...
C語言迴圈佇列的實現
迴圈佇列的操作包括初始化 求佇列的長度 入隊 出隊 取隊頭元素。下面是實現 在初始化之前,先進行預定義 define ok 1 define error 0 define overflow 2 define maxsize 100 typedef int status typedef int ele...