C語言 迴圈佇列的簡單實現

2021-06-28 22:46:21 字數 914 閱讀 3292

用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...