#include "queue.h" // 1. 初始化队列 void queue_init(struct queue *pq) { pq->tail = pq->head = 0; } // 2. 队列空判断, 空返回1, 否则返回0 int queue_is_empty(struct queue *pq) { return pq->head == pq->tail; } // 3. 队列满判断, 满返回1, 否则返回0 int queue_is_full(struct queue *pq) { int tail_next = (pq->tail + 1) % QUEUE_DATA_SIZE; if (tail_next == pq->head) return 1; return 0; } // 4. 入队, 成功返回1 ,失败返回0 int queue_enqueue(struct queue *pq, int value) { if (queue_is_full(pq)) return 0; pq->data[pq->tail] = value; pq->tail = (pq->tail + 1) % QUEUE_DATA_SIZE; return 1; } // 5. 出队, 成功返回1 ,失败返回0 int queue_dequeue(struct queue *pq, int *pvalue) { if (queue_is_empty(pq)) return 0; *pvalue = pq->data[pq->head]; pq->head = (pq->head + 1) % QUEUE_DATA_SIZE; return 1; } // 7. 清空队列 void queue_clear(struct queue *pq) { pq->head = pq->tail = 0; }