利用循环数组实现的队列

 #include<iostream>
#include<assert.h>
using namespace std;

template <class T>
class Queue
{
private:
 int maxsize;
 T *a;
 int front,rear;
public:
 Queue(int s=0):maxsize(s){a=new T[maxsize],front=rear=0;}
 void EnQue(const T& x)
 {
  assert(!isfull());
  rear=(rear+1)%maxsize;
  a[rear]=x;
 }
 T *DeQue()
 {
  assert(!isempty());
  front=(front+1)%maxsize;
  return &a[front];
 }
 int isfull()
 {
  return (rear+1)%maxsize==front;
 }
 int isempty()
 {
  return front==rear;
 }
 ~Queue()
 {
  delete []a;
 }
 void makeempty()
 {
  front=rear;
 }
};
void main()
{
 Queue<int> q(3);
 cout<<q.isempty();
 q.EnQue(8);
 q.EnQue(7);
 cout<<q.isfull();
 cout<<*q.DeQue();
 q.DeQue();
 cout<<q.isempty();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值