c语言写的循环队列
来源:互联网 发布:网络前端工程师 编辑:程序博客网 时间:2024/05/28 15:07
/////////////////////////////////////////////////////////////////////////////////////////////////////
//文件名称:LoopQueue.h
//功能说明:实现了循环队列结构
//使用说明:包含本文件前必须定义QUEUE_ELEMENT_TYPE,它表示队列中元素的类型,还可定义队列的大小QUEUE_MAX_SIZE,默认为
// 64+1,由于队列中始终要有一个空元素,所以实际最多可存64个元素。
/////////////////////////////////////////////////////////////////////////////////////////////////////
#include <memory.h>
#include <assert.h>
#ifndef BOOLEAN
#define BOOLEAN int
#endif
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
//循环队列的大寸(最大尺寸)
#ifndef QUEUE_MAX_SIZE
#define QUEUE_MAX_SIZE 64+1
#endif
#define LOOPQUEUEASSERT assert(pLQ != 0 && pLQ->front >=0 && pLQ->rear >= 0 && QUEUE_MAX_SIZE > 1)
struct LoopQueue
{
QUEUE_ELEMENT_TYPE data[QUEUE_MAX_SIZE];
long front;
long rear;
};
//初始化循环队列
void LoopQueue_Init(LoopQueue *pLQ)
{
pLQ->front = 0;
pLQ->rear = 0;
LOOPQUEUEASSERT;
}
//判断循环队列是否为空
BOOLEAN LoopQueue_IsEmpty(LoopQueue *pLQ)
{
LOOPQUEUEASSERT;
return pLQ->rear==pLQ->front;
}
//获取循环队列中存储的元素的个数
long LoopQueue_Length(LoopQueue *pLQ)
{
LOOPQUEUEASSERT;
return (pLQ->rear-pLQ->front+QUEUE_MAX_SIZE)%QUEUE_MAX_SIZE;
}
//入队
void LoopQueue_In(LoopQueue *pLQ, QUEUE_ELEMENT_TYPE element)
{
LOOPQUEUEASSERT;
if(pLQ->front==(pLQ->rear+1)%QUEUE_MAX_SIZE)
{
pLQ->rear=(pLQ->rear+1)%QUEUE_MAX_SIZE;
pLQ->data[pLQ->rear] = element;
pLQ->front=(pLQ->front+1)%QUEUE_MAX_SIZE;
}
else
{
pLQ->rear=(pLQ->rear+1)%QUEUE_MAX_SIZE;
pLQ->data[pLQ->rear] = element;
}
}
//出队
BOOLEAN LoopQueue_Out(LoopQueue *pLQ, QUEUE_ELEMENT_TYPE* pElement)
{
LOOPQUEUEASSERT;
if(LoopQueue_IsEmpty(pLQ))
return FALSE;
pLQ->front=(pLQ->front+1)%QUEUE_MAX_SIZE;
*pElement = pLQ->data[pLQ->front];
return TRUE;
}
- c语言写的循环队列
- c语言写的循环队列
- C语言:写一个循环队列
- C语言循环队列
- c语言:循环队列
- 循环队列 - C语言
- C语言 循环队列
- 【C语言】循环队列
- 循环队列的实现(C语言)
- c语言循环线性队列的实现
- 循环队列的实现(C语言)
- 顺序循环队列的c语言实现
- C语言-循环队列的简单实现
- c语言:循环队列的实现
- 循环队列的c语言实现
- C语言循环队列的实现
- 循环队列的c语言实现
- C语言 循环队列的实现
- Sql中判断"数据库"、"表"、"临时表"、"存储过程"和列"是否存在
- spring3 mvc sql date 类型转换问题
- 爱情这种东西
- DataGridView数据绑定控件---------按钮添加和事件触发总结
- mysql时间函数-- 转载http://laotu5i0.iteye.com/blog/691126
- c语言写的循环队列
- 缓冲区大小的问题
- E-OA相关故障分析总结
- vss6.0问题解决资料整理
- 【转】实施并行编程的五大障碍
- 在Client端配置Aras Innovator .NET Security 注意事项
- uva 10006 - Carmichael Numbers
- sn8p2501单片机
- 需要ICON的童鞋到这里来下载