队列:先进先出 栈:先进后出 用数组实现的队列为链式队列。 class CirQueue { private: int size; int front; int back; T* contain; public: CirQueue():size(0),front(0),back(0),contain(NULL){}//构造初始化 CirQueue(int maxsize); void EnQueue(const T&element);//向队列中添加值 T DelQueue(); //删除队头值 const T& GetFront(); void MakeEmpty(); bool IsEmpty(); bool IsFull(); }; template<class T> CirQueue<T>::CirQueue(int maxsize) { size=maxsize+1; front=back=0; contain=new T[maxsize]; } template<class T> void CirQueue<T>::EnQueue(const T &element) { if(IsFull()) { cout<<"队列已经满!"<<endl; return; } contain[back]=element; back=(back+1)%size; } template<class T> T CirQueue<T>::DelQueue() { int old=front; front=(front+1)%size; return contain[old]; } template<class T> const T& CirQueue<T>::GetFront() { if(IsEmpty()) { cout<<"队列为空!"<<endl; return 0; } return contain[front]; } template<class T> void CirQueue<T>::MakeEmpty() { front=back=0; } template<class T> bool CirQueue<T>::IsEmpty() { return front==back; } template<class T> bool CirQueue<T>::IsFull() { return(back+1)%size==front; } 简单的测试程序: int main() { CirQueue<int>*cq=new CirQueue<int>(10); cq->EnQueue(2); cq->EnQueue(3); cout<<cq->GetFront()<<endl; cq->DelQueue(); cout<<cq->GetFront()<<endl; return 0; }