循环队列(Circular Buffer)
- typedef struct {
- int buffer[SIZE];
- int head;
- int tail;
- int count;
- } CircularBuffer;
- void push(CircularBuffer *cb, int data) {
- if (cb->count < SIZE) {
- cb->buffer[cb->head] = data;
- cb->head = (cb->head + 1) % SIZE;
- cb->count++;
- }
- }
- int pop(CircularBuffer *cb) {
- if (cb->count > 0) {
- int data = cb->buffer[cb->tail];
- cb->tail = (cb->tail + 1) % SIZE;
- cb->count--;
- return data;
- }
- return -1; // Buffer is empty
- }
循环队列是一种高效的数据结构,适用于缓冲区和数据流应用,例如串口通信接收缓冲。
|