队列-实现

为了实现队列,我们可以使用动态数组和指向队列头部的索引。

如上所述,队列应支持两种操作:入队和出队。入队会向队列追加一个新元素,而出队会删除第一个元素。 所以我们需要一个索引来指出起点。

#include

class MyQueue {

    private:

        // store elements

        vector data;     

        // a pointer to indicate the start position

        int p_start;           

    public:

        MyQueue() {p_start = 0;}

        /** Insert an element into the queue. Return true if the operation is successful. */

        bool enQueue(int x) {

            data.push_back(x);

            return true;

        }

        /** Delete an element from the queue. Return true if the operation is successful. */

        bool deQueue() {

            if (isEmpty()) {

                return false;

            }

            p_start++;

            return true;

        };

        /** Get the front item from the queue. */

        int Front() {

            return data[p_start];

        };

        /** Checks whether the queue is empty or not. */

        bool isEmpty()  {

            return p_start >= data.size();

        }

};

int main() {

    MyQueue q;

    q.enQueue(5);

    q.enQueue(3);

    if (!q.isEmpty()) {

        cout << q.Front() << endl;

    }

    q.deQueue();

    if (!q.isEmpty()) {

        cout << q.Front() << endl;

    }

    q.deQueue();

    if (!q.isEmpty()) {

        cout << q.Front() << endl;

    }

}


#包括

MyQueue类{

私人:

//存储元素

向量数据;

//指示起始位置的指针

内部启动;

公众:

MyQueue(){p_start=0;}

/**将元素插入队列。如果操作成功,则返回true。*/

布尔排队(整数x){

数据。向后推(x);

返回真值;

}

/**从队列中删除元素。如果操作成功,则返回true。*/

布尔出列(){

如果(isEmpty()){

返回false;

}

pústart++;

返回真值;

};

/**从队列中获取前端项。*/

内部前端(){

返回数据[p_start];

};

/**检查队列是否为空。*/

bool isEmpty(){

return p_start>=data.size();

}

};

int主(){

我的队列q;

q、 排队(5);

q、 排队(3);

如果(!q、 isEmpty()){

无法<

}

q、 出列();

如果(!q、 isEmpty()){

无法<

}

q、 出列();

如果(!q、 isEmpty()){

无法<

}

}

你可能感兴趣的:(队列-实现)