队列中前面的元素在出队之后仍然可以插入元素入队,此时需要达到循环,主要操作就是靠取余运算,达到循环队列的效果。
#include<iostream>
#define MaxSize 10
using namespace std;
typedef struct SqQueue{
int data[MaxSize];
int front,rear;
};
//初始化
void InitSqQueue(SqQueue &Q){
Q.front = 0;
Q.rear = 0;
}
//入队
bool EnQueue(SqQueue &Q,int x){
if((Q.rear+1)%MaxSize==Q.front) //判断是否为满
return false;
Q.data[Q.rear] = x;
Q.rear = (Q.rear+1) % MaxSize;
return true;
}
//出队
bool DeQueue(SqQueue &Q,int &x){
if(Q.front == Q.rear)
return false;
x = Q.data[Q.front];
Q.front = (Q.front+1)%MaxSize;
return true;
}
//查询队头
bool GetHead(SqQueue Q,int &x){
if(Q.front == Q.rear)
return false;
x = Q.data[Q.front];
return true;
}
int main(){
SqQueue Q;
InitSqQueue(Q);
EnQueue(Q,2);
EnQueue(Q,3);
int x;
DeQueue(Q,x);
cout << x << endl;
int y = 2;
GetHead(Q,y);
cout << y << endl;
return 0;
}