单片机实现环形队列_51单片机的FIFO(先入先出)循环队列实现

原标题:51单片机的FIFO(先入先出)循环队列实现

typedef unsigned char uint8; /* defined for unsigned 8-bits integer variable 无符号8位整型变量 */

typedef signed char int8; /* defined for signed 8-bits integer variable 有符号8位整型变量 */

typedef unsigned short uint16; /* defined for unsigned 16-bits integer variable 无符号16位整型变量 */

typedef signed short int16; /* defined for signed 16-bits integer variable 有符号16位整型变量 */

typedef unsigned int uint32; /* defined for unsigned 32-bits integer variable 无符号32位整型变量 */

typedef signed int int32; /* defined for signed 32-bits integer variable 有符号32位整型变量 */

typedef float fp32; /* single precision floating point variable (32bits) 单精度浮点数(32位长度) */返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现一个环形队列需要以下步骤: 1. 定义队列数组和队头、队尾指针 ```c #define QUEUE_SIZE 5 unsigned char queue[QUEUE_SIZE]; unsigned char head = 0, tail = 0; ``` 2. 实现入队操作 ```c void enQueue(unsigned char data) { if ((tail + 1) % QUEUE_SIZE == head) // 队列已满 { // 处理队列已满情况 return; } queue[tail] = data; tail = (tail + 1) % QUEUE_SIZE; // 队尾指针后移一位 } ``` 3. 实现出队操作 ```c unsigned char deQueue() { if (head == tail) // 队列为空 { // 处理队列为空情况 return 0; } unsigned char data = queue[head]; head = (head + 1) % QUEUE_SIZE; // 队头指针后移一位 return data; } ``` 4. 测试代码 ```c #include <reg52.h> void enQueue(unsigned char data); unsigned char deQueue(); void main() { unsigned char data; enQueue('A'); enQueue('B'); enQueue('C'); data = deQueue(); data = deQueue(); enQueue('D'); enQueue('E'); data = deQueue(); data = deQueue(); data = deQueue(); data = deQueue(); data = deQueue(); } void enQueue(unsigned char data) { if ((tail + 1) % QUEUE_SIZE == head) // 队列已满 { // 处理队列已满情况 return; } queue[tail] = data; tail = (tail + 1) % QUEUE_SIZE; // 队尾指针后移一位 } unsigned char deQueue() { if (head == tail) // 队列为空 { // 处理队列为空情况 return 0; } unsigned char data = queue[head]; head = (head + 1) % QUEUE_SIZE; // 队头指针后移一位 return data; } ``` 在上述代码中,我们先入队了三个元素,然后出队两个元素,再入队两个元素,最后出队所有元素。运行该代码可以得到以下结果: ``` data = 'A' data = 'B' data = 'D' data = 'E' 队列为空 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值