行业知识
C语言-简单的环形队列的源码示例
2026-10-30 08:12:43
来源:互联网转载
概述
�� 环形队列(Circular Queue)是一种常见的数据结构,特别适用于在单片机等资源受限的环境下实现缓冲区或队列功能。下面是一个简单的环形队列的源码示例,用C语言实现:
()#include #include #define QUEUE_SIZE 10// 定义环形队列结构体typedef struct { uint8_t buffer[QUEUE_SIZE]; // 数据缓冲区 uint8_t head; // 队头指针 uint8_t tail; // 队尾指针 uint8_t count; // 队列中元素数量} CircularQueue;// 初始化环形队列void initQueue(CircularQueue *q) { q->head = 0; q->tail = 0; q->count = 0;}// 向队列中添加元素void enqueue(CircularQueue *q, uint8_t data) { if (q->count buffer[q->tail] = data; q->tail = (q->tail + 1) % QUEUE_SIZE; q->count++; } else { printf("Queue is full, cannot enqueue!\n"); }}// 从队列中取出元素uint8_t dequeue(CircularQueue *q) { if (q->count > 0) { uint8_t data = q->buffer[q->head]; q->head = (q->head + 1) % QUEUE_SIZE; q->count--; return data; } else { printf("Queue is empty, cannot dequeue!\n"); return 0; // 返回一个特殊值表示队列为空 }}// 获取队列中元素数量uint8_t queueSize(CircularQueue *q) { return q->count;}int main(void) { CircularQueue q; initQueue(&q); // 向队列中添加元素 for (int i = 1; i 0) { uint8_t data = dequeue(&q); printf("%d ", data); } printf("\n"); return 0;} ()
上一篇:云服务器怎么架构?
下一篇:电脑版服务器怎么玩?