📄 queue.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"
#ifdef QUEUE_H_INCLUDED
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;
}
if(q->size > q->capacity){
q->size = q->capacity;
}
}
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);
}
Q_SIZE_TYPE q_flush(Queue *q, Q_DATA_TYPE *buf){
Q_SIZE_TYPE i = 0;
while(!q_empty(q)){
buf[i] = q_popfront(q);
++ i;
}
return i;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -