Index | Diary 2024-05-16

在尾部入队列 enqueue

在头部出队列 dequeue

适用问题

代码实现

    // C++ 队列实例
    #include <queue>
    std::queue<int> q;
    q.push(1);  //入队
    q.push(2);
    q.pop();    // 出队

动态队列

    #include <iostream>
    
    using namspace std;
    
    class Node {
        public:
            double data;
            Node* next;     // pointer to next
    };
    
    class Queue {
        public:
            Queue();
            ~Queue();
            bool IsEmpty(void);
            void Enqueue(double x);
            bool Dequeue(double &x);
            void DisplayQueue(void);
        private:
            Node* front;    // front index
            Node* rear;
            int counter;    // number of elements
    };
    
    Queue::Queue() {
        front = rear = NULL;
        counter = 0;
    }
    
    Queue::~Queue() {
        double value;
        while (!IsEmpty())
            Dequeue(value);
    }
    
    void Queue::Enqueue(double x) {
        Node* newNode = new Node;
        newNode->data = x;
        newNode->next = NULL;
        if (IsEmpty()) {
            front = newNode;
            rear = newNode;
        }
        else {
            rear->next = newNode;
            rear = newNode;
        }
        counter++;
    }
    
    bool Queue::Dequeue(double &x) {
        if(IsEmpty()) {
            cout << "Error: the queue is empty." << endl;
            return false;
        }   
        else {
            x = front->data;
            Node* nexNode = front-next;
            delete front;
            front = nextNode;
            counter--;
        }
    }