关闭

c语言写的循环队列

3564人阅读 评论(0) 收藏 举报
/////////////////////////////////////////////////////////////////////////////////////////////////////
//文件名称: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;
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:99767次
    • 积分:1367
    • 等级:
    • 排名:千里之外
    • 原创:30篇
    • 转载:2篇
    • 译文:2篇
    • 评论:33条
    最新评论