📄 queue.c.svn-base
字号:
/* ****ROBOCON 2009 | BUPT TEAM*******
* ------------------------------------------------------------------------
* FileName : queue.c
* Version : 1.1
* Brief : 循环队
* Code by : Leaf
* Date : 04-07 2009
* Dependence : None
* Parameters : Q_DATA_TYPE, Q_SIZE_TYPE
* Note : 未使用动态分配
*
*
* ------------------------------------------------------------------------
*/
#include "lib_bupt.h"
#ifdef QUEUE_H_INCLUDED
/*初始化队,未使用动态分配*/
void qInit(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;
}
/*获取队大小*/
inline Q_SIZE_TYPE qSize(const Queue *q){
return q->size;
}
/*队是否满*/
inline BOOL qFull(const Queue *q)
{
return(q->size >= q->capacity);
}
/*队是否空*/
inline BOOL qEmpty(const Queue *q)
{
return(q->size == 0);
}
/*入队*/
void qPush(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 qPop(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_DATA_TYPE qFront(const Queue *q){
return q->buf[q->front];
}
/*将队队中的全部数据放到buf中*/
Q_SIZE_TYPE qFlush(Queue *q, Q_DATA_TYPE *buf){
Q_SIZE_TYPE i = 0;
while(!qEmpty(q)){
buf[i] = qPop(q);
++ i;
}
return i;
}
/*重置队的游标*/
void qReset(Queue *q){
q->size = 0;
q->back = 0;
q->front = 0;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -