基于数组的队列实现

来源:互联网 发布:qq空间模拟登录 php 编辑:程序博客网 时间:2024/06/05 01:14
//--------------Queue.h------------------#include<iostream>#ifndef QUEUE#define QUEUEconst int QUEUE_CAPACITY=128;typedef int QueueElement;class Queue{public:Queue();bool empty() const;void enqueue(const QueueElement & value);void display(ostream & out) const;QueueElement front() const;void dequeue();private:int myFront,    myBack;QueueElement myArray[QUEUE_CAPACITY];};#endif

//-------------Queue.cpp-------------------#include<iostream>using namespace std;#include"Queue.h"Queue::Queue():myFront(0),myBack(0)    {}bool Queue::empty() const{return (myFront==myBack);}void Queue::enqueue(const QueueElement & value){int newBack=(myBack+1)%QUEUE_CAPACITY;if(newBack!=myFront){myArray[newBack]=value;myBack=newBack;}else{cerr<<"***The queue is full---can't add new value***\n";exit(1);}}void Queue::display(ostream & out) const{for(int i=myFront;i!=myBack;i=(i+1)%QUEUE_CAPACITY)out<<myArray[i]<<" ";cout<<endl;}QueueElement Queue::front() const{if(!empty())    return (myArray[myFront]);else{cerr<<"***The queue is empty--returning a garbage value***\n";QueueElement garbage;return garbage;}}void Queue::dequeue(){if(!empty()){myFront=(myFront+1)%QUEUE_CAPACITY;}else{cerr<<"***The queue is empty,can't remove a value.***\n";}}

//----------------Queue_main.cpp-------------------#include<iostream>using namespace std;#include"Queue.h"int main(){Queue q;cout<<"The new is empty? "<<boolalpha<<q.empty()<<endl;cout<<"Add 233 to the queue."<<endl;q.enqueue(233);cout<<"The new is empty? "<<boolalpha<<q.empty()<<endl;cout<<"Output the front of queue? "; q.front();cout<<"Delete the front of queue ";  q.dequeue();    cout<<"The new is empty? "<<boolalpha<<q.empty()<<endl;return 0;}//会闪退?