笔记:
头指针指向队头元素,尾指针指向队尾元素的下一个位置
采用牺牲一个存储单元的方式来区别队满和队空的判断
队空条件:Q.front==Q.rear
队满条件:(Q.rear+1)%MaxSize==Q.front
队中元素个数:(Q.rear-Q.front+MaxSize)%MaxSiz
代码如下:
#include <iostream>
//牺牲一个存储空间实现对于队满的判断
//头指针指向队头元素,尾指针指向队尾元素的下一个位置
typedef int ElemType;
using namespace std;
//循环队列结构类型
#define MaxSize 10
typedef struct
{
ElemType data[MaxSize];
int rear,front;
} SqQeueu;
//初始化
void InitQueue(SqQeueu &Q)
{
Q.front=0;
Q.rear=0;
}
//判断队空
bool QueueEmpty(SqQeueu Q)
{
if(Q.front==Q.rear)//判断队空
{
cout<<"队空!"<<endl;
return true;
}
else
return false;
}
//入队
bool EnQueue(SqQeueu &Q, ElemType x)
{
if((Q.rear+1)%MaxSize==Q.front