循环队列是顺序队的一种,意在解决队首和队尾指针同同时等于MAXSIZE-1的时候,会发声假上溢的情况,利用循环队列解决了这个问题
判断是否队空,则看rear=front==0
判断是否队满,则看(rear+1)%MAXSIZE==front
/*
* 学习时间:2018-10-11
* 学习内容:数据结构之循环队列的实现
* 学习人:田超
* QQ:770925351
* Email:770925351@qq.com
* 开发环境:Ubuntu 16.04 + CLion
* */
#include <stdio.h>
#define MAXSIZE 10
#define TRUE 1
#define ERROR 0
typedef struct SqQueue
{
int front; //队首
int rear; //队尾
int data[MAXSIZE]; //数据域
}SqQueue;
void initQueue(SqQueue &qu) //初始化队
{
qu.front=qu.rear=0; //初始化队首
}
int isQueueEmpty(SqQueue qu) //判断队是否为空
{
if(qu.front==qu.rear)
return TRUE;
else
return ERROR;
}
int isQueueFull(SqQueue qu) //判断队是否已满
{
if((qu.rear+1)%MAXSIZE==qu.front)
return TRUE;
else
return ERROR;
}
int inQueue(SqQueue &qu,int x) //入队
{
if(isQueueFull(qu))
return ERROR;
qu.rear=(qu.rear+1)%MAXSIZE;
qu.data[qu.rear]=x;
return TRUE;
}
int outQueue(SqQueue &qu,int &x) //出队
{
if(isQueueEmpty(qu))
return ERROR;
qu.front=(qu.front+1)%MAXSIZE;
x=qu.data[qu.front];
return TRUE;
}
int main()
{
return 0;
}