Files
2026-10-19 15:47:18 +08:00

46 lines
1.0 KiB
C

#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;
}