循環(huán)隊列是順序隊的一種,意在解決隊首和隊尾指針同同時等于MAXSIZE-1的時候,會發(fā)聲假上溢的情況,利用循環(huán)隊列解決了這個問題
判斷是否隊空,則看rear=front==0
判斷是否隊滿,則看(rear+1)%MAXSIZE==front
/*
* 學習時間:2018-10-11
* 學習內(nèi)容:數(shù)據(jù)結構之循環(huán)隊列的實現(xiàn)
* 學習人:田超
* QQ:770925351
* Email:770925351@qq.com
* 開發(fā)環(huán)境: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]; //數(shù)據(jù)域
}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;
}