野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8728|回复: 3

采用野火stm32工程的数据结构C实现方式队列操作

[复制链接]
发表于 2016-10-10 10:14:54 | 显示全部楼层 |阅读模式
本帖最后由 challee 于 2016-10-10 11:01 编辑

  1. /************************************************************************
  2. **  队列操作函数
  3. **
  4. ******************************************************************************/

  5. #include "Queue.h"

  6. #define QueueSize 100
  7. typedef char DataType;
  8. typedef struct{
  9.         int front;    //定义队列头指针
  10.         int rear;   //队列尾指针
  11.         int count;  //队列元素个数
  12.         DataType data[QueueSize];   //队列数据域
  13. }CirQueue;

  14. void InitQueue(CirQueue *Q)           //初始化队列
  15. {
  16.         Q->front = Q->rear=0;           //将头尾指针值0
  17.         Q->count =0;
  18. }

  19. int QueueEmpty(CirQueue *Q)   //如果队列元素个数为0 则判队列为空
  20. {
  21.         return Q->count==0;
  22. }

  23. int QueueFull(CirQueue *Q)          //判队列满
  24. {
  25.         return Q->count ==QueueSize;
  26. }

  27. void EnQueue(CirQueue *Q,DataType x)      //队尾入队,
  28. {
  29.         if(QueueFull(Q))
  30.                 printf("Queue overflow");
  31.         Q->count++;
  32.         Q->data[Q->rear]=x;
  33.         Q->rear=(Q->rear+1)%QueueSize;           //循环队列使用,将队尾指针对循环空间大小取余,避免队尾指针rear大于队列大小Size
  34. }
  35. DataType DeQueue(CirQueue *Q)                   //出队,和入队原理一样呢,不同的是出队在队头,入队在队尾
  36. {
  37.         DataType temp;
  38.         if(QueueEmpty(Q))
  39.                 printf("Queue underflow");
  40.         temp=Q->data[Q->front];
  41.         Q->count--;
  42.         Q->front=(Q->front+1)%QueueSize;
  43.         return temp;
  44. }

  45. DataType QueueFront(CirQueue *Q)               //取队头元素
  46. {
  47.         if(QueueEmpty(Q))
  48.                 printf("Queue if empty");
  49.         return Q->data[Q->front];
  50. }



复制代码

回复

使用道具 举报

发表于 2016-10-10 10:29:27 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2019-7-16 08:53:46 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2019-12-13 10:24:44 | 显示全部楼层
能分享下更详细的一点的么
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-4-19 19:49 , Processed in 0.028013 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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