[软件资料] C语言循环队列

[复制链接]
1047|11
 楼主| szt1993 发表于 2024-3-5 13:48 | 显示全部楼层 |阅读模式
循环队列(Circular Buffer)

  1. typedef struct {
  2.     int buffer[SIZE];
  3.     int head;
  4.     int tail;
  5.     int count;
  6. } CircularBuffer;

  7. void push(CircularBuffer *cb, int data) {
  8.     if (cb->count < SIZE) {
  9.         cb->buffer[cb->head] = data;
  10.         cb->head = (cb->head + 1) % SIZE;
  11.         cb->count++;
  12.     }
  13. }

  14. int pop(CircularBuffer *cb) {
  15.     if (cb->count > 0) {
  16.         int data = cb->buffer[cb->tail];
  17.         cb->tail = (cb->tail + 1) % SIZE;
  18.         cb->count--;
  19.         return data;
  20.     }
  21.     return -1; // Buffer is empty
  22. }

循环队列是一种高效的数据结构,适用于缓冲区和数据流应用,例如串口通信接收缓冲。

评论

比较适合串口收发  发表于 2024-3-13 09:57
AdaMaYun 发表于 2024-3-5 14:11 | 显示全部楼层
循环队列是一种高效的数据结构,适用于缓冲区和数据流应用,方法真的很重要
LOVEEVER 发表于 2024-3-5 15:19 | 显示全部楼层
循环队列英中在串口等通信上较多
星辰大海不退缩 发表于 2024-3-11 15:55 | 显示全部楼层
循环队列其实可以认为是一个头一个尾不停的进出数据
OKAKAKO 发表于 2024-3-11 16:33 | 显示全部楼层
循环队列都有哪些具体的实践应用呢?

评论

串口通讯  发表于 2024-3-13 09:57
小小蚂蚁举千斤 发表于 2024-3-18 13:24 | 显示全部楼层
循环队列是一种高效的数据结构,适用于缓冲区和数据流应用,例如串口通信接收缓冲。
小夏天的大西瓜 发表于 2024-3-19 16:46 | 显示全部楼层
循环队列是一种高效的数据结构,适用于缓冲区和数据流应用,例如串口通信接收缓冲。
中国龙芯CDX 发表于 2024-3-21 14:59 | 显示全部楼层
循环队列其实可以认为是一个头一个尾不停的进出数据的循环过程
jf101 发表于 2024-3-22 12:24 | 显示全部楼层
循环队列是一种高效的数据结构
 楼主| szt1993 发表于 2024-3-25 15:25 | 显示全部楼层
OKAKAKO 发表于 2024-3-11 16:33
循环队列都有哪些具体的实践应用呢?

其实这个应用非常多,数据通信、多数据存储都可以使用的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

350

主题

3021

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部