⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queue.c

📁 基于中断实现的串口通信程序
💻 C
字号:
/*                ****ROBOCON 2009 | BUPT TEAM*******
 * ------------------------------------------------------------------------
 * FileName   : queue.c
 * Version    : 0.1
 * Brief      : Queue Data Structure
 * Code by    : Leaf
 * Date       : 12-08 2008
 * Dependence : None
 * Parameters : Q_DATA_TYPE, Q_SIZE_TYPE
 * Note       :
 *
 *
 * ------------------------------------------------------------------------
 */

#include "config.h"

void q_init(Queue *q, Q_DATA_TYPE *buf, Q_SIZE_TYPE bufsize)
{
   q->buf      = buf;
   q->capacity = bufsize;
   q->size     = 0;
   q->front    = 0;
   q->back     = 0;
}

BOOL q_full(Queue *q)
{
   return(q->size >= q->capacity);
}

BOOL q_empty(Queue *q)
{
   return(q->size == 0);
}

void q_pushback(Queue *q, Q_DATA_TYPE d)
{
   q->buf[q->back] = d;
   ++ (q->back);
   ++ (q->size);
   if(q->back >= q->capacity)
   {
      q->back = 0;
   }
}

Q_DATA_TYPE q_popfront(Queue *q)
{
   Q_DATA_TYPE d;
   d = q->buf[q->front];
   ++ (q->front);
   -- (q->size);
   if(q->front >= q->capacity)
   {
      q->front = 0;
   }
   return(d);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -