Queue.h

#ifndef H_QueueType
#define H_QueueType


#include<iostream>
#include<cassert>

using namespace std;

template<class Type>
class QueueType
{
    public:
  const QueueType<Type>& operator=(const QueueType<Type>&);
      
        bool isEmptyQueue();

        bool isFullQueue();

        void initializeQueue();

       void destroyQueue();

    Type front();

    Type back();

    void addQueue(const Type& QueueElement);

      void deleteQueue();

   QueueType(int QueueSize=100);

      QueueType(const QueueType<Type>& otherQueue);
    
       ~QueueType();

 private:
         int maxQueueSize;
         int count;
   int queueFront;
   int queueRear;
   Type *list;

};


template<class Type>
void QueueType<Type>::initializeQueue()
{
    queueFront=0;
    queueRear=maxQueueSize-1;
    count=0;

}

template<class Type>
bool QueueType<Type>::isEmptyQueue()
{
 
    return(count==0);

}

template<class Type>
bool QueueType<Type>::isFullQueue()
{

    return(count==maxQueueSize);

}

template<class Type>
void QueueType<Type>::destroyQueue()
{

    intializeQueue();

}

template<class Type>
Type QueueType<Type>::front()
{

   assert(!isEmptyQueue());

   return list[queueFront];

}

template<class Type>
Type QueueType<Type>::back()
{

  assert(!isEmptyQueue());
 
  return(list[queueRear]);
}

template<class Type>
void QueueType<Type>::addQueue(const Type& newElement)
{
    if(!isFullQueue())
 {
     queueRear=(queueRear+1)%maxQueueSize;
    
    count++;
  
       list[queueRear]=newElement;
 }

  else
   cerr<<"Cannot add to a full queue."<<endl;


}

template<class Type>
void QueueType<Type>::deleteQueue()
{

    if(!isEmptyQueue())
 {
    count--;
 
    queueFront=(queueFront+1)%maxQueueSize;
 
 
 }

else
    cerr<<"Cannot remove from an empty queue."<<endl;


}

template<class Type>
QueueType<Type>::QueueType(int queueSize)
{

    if(queueSize<=0)
 {
    cerr<<"The size of the array to hold the queue must be positive. "<<endl;
 
   maxQueueSize=100;
 }

    else
  maxQueueSize=queueSize;
   
        queueFront=0;
  queueRear=maxQueueSize-1;
        list=new Type[maxQueueSize];
        assert(list!=NULL);   
}

template<class Type>
QueueType<Type>::~QueueType()
{


delete[]list;

}
#endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值