- 求余运算实现循环
- 队头等于队尾时为空
- 队头在队尾的下一个位置是为满
#include <iostream>
using namespace std;
#define size 10
class CircleQueue
{
int data[size];
int front;
int rear;
public:
CircleQueue(){ front = 0; rear = 0; }
bool Initial(){ front = rear = 0; }
bool IsEmpty()
{
return front == rear;
}
bool IsFull()
{
return ((rear + 1) % size == front);
}
bool Push(int x)
{
if (IsFull())
{
return false;
}
data[rear] = x;
rear = (rear + 1) % size;
return true;
}
bool Pop()
{
if (IsEmpty())
{
return false;
}
front = (front + 1) % size;
}
int get()
{
if (IsEmpty())
{
exit(1);
}
return data[front];
}
};
int main()
{
CircleQueue queue;
queue.Push(1);
queue.Push(2);
queue.Push(3);
queue.Push(4);
queue.Push(5);
queue.Pop();
queue.Pop();
queue.Pop();
queue.Pop();
queue.Pop();
queue.Push(1);
queue.Push(2);
queue.Push(3);
queue.Push(4);
queue.Push(5);
queue.Push(6);
queue.Push(7);
return 0;
}