/* * Copyright (c) * * * 文件名称:aqueue.h * 文件标识:.h * 摘 要:循环队列 * * 当前版本: * 作 者: * 完成日期: */ template<class Elem> class AQueue { private: int size;//maximum size of queue int front;//index of front element int rear;//index of rear element Elem *listArray; public: AQueue(int length=10) { size=length + 1; rear=0; front=1; listArray = new Elem[size]; } ~AQueue() { delete []listArray; } void clear() { front=rear; } bool enqueue(const Elem &it) { if((rear+2)%size==front) return false; //full rear=(rear+1)%size; listArray[rear]=it; return true; } bool dequeue( Elem &it) { if(length()==0) return false; it = listArray[front]; front = (front + 1) %size; return true; } bool frontValue(Elem &it)const { if(length()==0) return false; it=listArray[front]; return true; } int length()const { return (rear+size-front+1)%size; } };