硬汉嵌入式论坛

 找回密码
 立即注册
查看: 518|回复: 5
收起左侧

[算法] 简约队列

[复制链接]

19

主题

265

回帖

322

积分

高级会员

积分
322
发表于 2025-12-9 20:46:28 | 显示全部楼层 |阅读模式
本帖最后由 yunqi 于 2025-12-9 21:00 编辑

[C] 纯文本查看 复制代码
#define QUEUE_SIZE 100
typedef struct {
    int data[QUEUE_SIZE];
    int front;
    int rear;
} CircularQueue;

bool isEmpty(CircularQueue *q) {
    return q->front == q->rear;
}

bool isFull(CircularQueue *q) {
    return (q->rear + 1) % QUEUE_SIZE == q->front;
}

bool enqueue(CircularQueue *q, int value) {
    if (isFull(q)) return false;
    q->data[q->rear] = value;
    q->rear = (q->rear + 1) % QUEUE_SIZE;
    return true;
}

bool dequeue(CircularQueue *q, int *value) {
    if (isEmpty(q)) return false;
    *value = q->data[q->front];
    q->front = (q->front + 1) % QUEUE_SIZE;
    return true;
}

回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120448
QQ
发表于 2025-12-10 11:11:26 | 显示全部楼层
谢谢分享。
回复

使用道具 举报

11

主题

45

回帖

78

积分

初级会员

积分
78
发表于 2025-12-10 14:45:23 | 显示全部楼层
你好,这个确实是一种实现方式。不过,感觉一般使用时候,单次调用一次函数需要连续缓存多个数据才行。
回复

使用道具 举报

19

主题

265

回帖

322

积分

高级会员

积分
322
 楼主| 发表于 2025-12-10 21:25:31 来自手机 | 显示全部楼层
longge 发表于 2025-12-10 14:45
你好,这个确实是一种实现方式。不过,感觉一般使用时候,单次调用一次函数需要连续缓存多个数据才行。

嗯,不太懂你意思,是不是把缓存换成结构体类型去满足多个数据存储储存。
回复

使用道具 举报

11

主题

45

回帖

78

积分

初级会员

积分
78
发表于 2025-12-11 08:43:11 | 显示全部楼层
yunqi 发表于 2025-12-10 21:25
嗯,不太懂你意思,是不是把缓存换成结构体类型去满足多个数据存储储存。

我意思是一次存入、读取缓存多个数据,函数格式如下;
value 为需要缓存的数据,size 为需要缓存的数据数量
bool enqueue(CircularQueue *q, int * value,int size)
value 为缓存数据的地址,size 为缓存数据的大小,get_size 为实际获得的数据数量
bool dequeue(CircularQueue *q, int *value, int size, int * get_size)
回复

使用道具 举报

19

主题

265

回帖

322

积分

高级会员

积分
322
 楼主| 发表于 2025-12-12 07:53:18 来自手机 | 显示全部楼层
longge 发表于 2025-12-11 08:43
我意思是一次存入、读取缓存多个数据,函数格式如下;
value 为需要缓存的数据,size 为需要缓存的数据 ...

哦,明白了,OS队列消息
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-1-10 17:23 , Processed in 0.059821 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表