#include<iostream>
using namespace std;
class Queue
{
public:
Queue(int capacity);
~Queue();
bool isEmpty();
void isEmptyOut();
bool isFull();
void isFullOut();
bool enqueue(int elem);
bool dequeue(int &elem);
int QueueLen();
void QueueTra();
private:
int *q_Buffer;
int q_capacity;
int q_len;
int q_Head;
int q_Tail;
};
Queue::Queue(int capacity)
{
q_Buffer=new int[capacity];
q_capacity=capacity;
q_len=0;
q_Head=0;
q_Tail=0;
}
Queue::~Queue()
{
delete []q_Buffer;
q_Buffer=NULL;
}
bool Queue::isEmpty()
{
return q_len==0?true:false;
}
void Queue::isEmptyOut()
{
if(isEmpty())
{
cout<<"队列为空"<<endl;
}
else
{
cout<<"队列不为空"<<endl;
}
}
bool Queue::isFull()
{
return q_len==q_capacity?true:false;
}
void Queue::isFullOut()
{
if(isFull())
{
cout<<"队列已满"<<endl;
}
else
{
cout<<"队列未满"<<endl;
}
}
int Queue::QueueLen()
{
return q_len;
}
bool Queue::enqueue(int elem)
{
if(isFull())
{
return false;
}
else
{
q_Buffer[q_Tail++]=elem;
q_Tail=q_Tail%q_capacity;
q_len++;
return true;
}
}
bool Queue::dequeue(int &elem)
{
if(isEmpty())
{
return false;
}
else
{
elem=q_Buffer[q_Head++];
q_Head=q_Head%q_capacity;
q_len--;
cout<<"删除的元素为:"<<elem<<endl;
return true;
}
}
void Queue::QueueTra()
{
for(int i=q_Head; i<q_Head+q_len; i++)
{
cout<<q_Buffer[i%q_capacity]<<endl;
}
}
int main()
{
Queue *q=new Queue(5);
q->isEmptyOut();
q->enqueue(1);
q->enqueue(2);
q->enqueue(3);
q->enqueue(4);
q->enqueue(5);
q->QueueTra();
q->isFullOut();
cout<<"队列的长度为:"<<q->QueueLen()<<endl;
int elem=0;
q->dequeue(elem);
q->dequeue(elem);
q->QueueTra();
cout<<"队列的长度为:"<<q->QueueLen()<<endl;
q->isFullOut();
delete q;
q=NULL;
return 0;
}
08-10
576
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)