嵌入式学习15(队列)

本文介绍了嵌入式系统中队列的工作原理,重点讲解了如何使用结构体定义数据模型,并实现包括初始化、进队、出队等在内的功能。还讨论了队列假满的问题及其解决方案——循环队列,详细阐述了循环队列的满、空判断条件以及队列长度的计算。最后给出了相关实现代码的头文件和源文件。
摘要由CSDN通过智能技术生成

1、队列:先进先出FIFO
2、数据模型:
struct queue
{
数据容器[队列长度];
rear;//队尾
front;//队头
};
3、功能:
初始化initQueue()
进队 EnQueue()
出队 DeQueue()
判断队为空 isEmpty()
判断队为满 isFull()
判断队列长度 QueueLenth()
清空队列 ClearQueue()
4、假满:由于通过rear指向尾处来进行判断是否为满,一当有队头元素出队时,队列不再为满。
if(rear==MAXSIZE-1) 满
if(front==rear) 空
5、解决方法:循环队列
核心:
头指针:指向第一个非空
尾指针:指向第一个空
满:(rear+1)%MAXSIZE==front 浪费一个空间来获得判断队满条件
空:front==rear
队长:(rear-fornt+MAXSIZE)%MAXSIZE

实现代码
头文件

#ifndef _QUEUE_DEF_
#define _QUEUE_DEF_

#include<stdbool.h>
#define MAXSIZE 10
//前置声明
struct queue;
struct patient;

typedef struct patient  QueueType;
//重命名struct queue;
typedef struct queue Queue;

struct patient
{
    char name[10];//姓名
    short sex;  //姓别 0男  1女
    char dp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值