迴圈佇列的操作包括初始化、求佇列的長度、入隊、出隊、取隊頭元素。下面是實現**:
在初始化之前,先進行預定義:
#define ok 1
#define error 0
#define overflow -2
#define maxsize 100
typedef int status;
typedef int elemtype;
typedef structsqqueue;
初始化:
status initqueue(sqqueue *q)
先在記憶體中分配100個elemtype型別的空間,然後讓q->base指向首位址。判斷q->base是否為null,如果是,說明分配失敗,則退出;不為null的時候,讓q->front和q->rear為0。
求佇列長度:
int queuelength(sqqueue q)
將q->rear減去q->front再加maxsize後對maxsize求余能得到長度。
入隊:
status enqueue(sqqueue *q, elemtype e)
插入之前,先判斷佇列是否已滿,如果已滿,返回錯誤。將e賦值給q->base[q->rear](即插入隊尾)。然後將隊尾後移一位。
出隊:
status dequeue(sqqueue *q, elemtype *e)
出隊之前,先判斷隊是否為空隊,如果是,則返回錯誤。將隊頭元素q->base[q->front]賦值給*e,然後將隊頭向後移動一位即可。
取隊頭元素:
elemtype gethead(sqqueue q)
先判斷是否為空隊,如果為空,則返回錯誤,不為空的話返回首元素。
加入main()測試:
int main(void)
}return 0;
}
迴圈佇列實現(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 ...
mysql迴圈佇列 C語言實現 迴圈佇列
include include include typedef struct queue int pbase 陣列 int front 頭 int rear 尾 rear不存放資料,所以rear前面的是最後乙個資料 queue void init queue queue pq bool full q...