队列 C++实现

    技术2022-05-20  34

     

    Queue.h:

     

    #include "iostream"//using namespace std;

    #ifndef QUEUE#define QUEUE

    const int QUEUE_CAPACITY =128;typedef int QueueElement;

    class Queue{private: int myFront; int myBack; QueueElement myArray[QUEUE_CAPACITY];public: Queue(); bool empty() const; void enqueue(const QueueElement &value); void display() const; QueueElement front() const; void dequeue();};

    #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;              //newBack不为0则表示队列没满           if (newBack!=myFront){                    //队列没满               myArray[myBack]=value;;  myBack=newBack; } else{  cout<<"/n";  exit(1); }}

    void Queue::display() const{                          for(int i=myFront; i!=myBack; i=(i+1)%QUEUE_CAPACITY){  cout<<myArray[i]<<" ";  cout<<endl; }}

    QueueElement Queue::front() const{ if(!empty())  return (myArray[myFront]); else {  cerr<<"Queue is empty----returing garbage value--/n";  QueueElement garbage;  return garbage; }}

    void Queue::dequeue(){                              //从队头删除一个元素(出队) if(!empty())  myFront=(myFront+1)%QUEUE_CAPACITY;             //myFront后移一位 else  cerr<<"Queue is empty!  can't remove a value!/n";}

    int main(){ int num; Queue q;    int m,n;    /* 入队10个数 */ cout<<"请输入10个数:"<<endl; for(int i=0; i<10;i++){  cin>>num;  q.enqueue(num); }

      /* 输出此时队列的元素 */ cout << "队列所有元素:" << endl; q.display();     /* 出队 */ cout<<"请输入出队元素的个数:"; cin>>m; for (int i=0; i<m; i++ ){              //出5个元素  q.dequeue(); } cout << endl;

     /* 输出此时队列的元素 */ cout << "出队后队列所有元素:" << endl; q.display(); cout<<endl;

     /* 再入队 */ cout<<"请输入入队元素的个数:"; cin>>n; cout<<"请输入"<<n<<"个数:"<<endl; for (int i= 0;i<n; i++ ){  cin>>num;  q.enqueue(num); }

     /* 输出此时队列的元素 */ cout << "入队后队列所有元素:" << endl; q.display(); cout<<endl; system("pause"); return 0;}

     


    最新回复(0)