1. 程式人生 > 其它 >模擬佇列

模擬佇列

模擬佇列 佇列特徵:先進先出 模擬方式: 定義兩個指標表示隊頭和隊尾:head,tail 插入:隊尾插入 x,`queue[tail++] = x` 彈出:隊頭彈出:`head++` 判斷空:`head == tail` 訪問隊首元素:`queue[head]` 上述操作建立在初始化:`head = 0, tail = 0` 的基礎上 當初始化為:`head = 0, tail = -1` 時,在插入和判斷空的操作上有些許不同: 插入:`queue[++tail]` 判空:`head > tail` 例題

模擬佇列

佇列特徵:先進先出

模擬方式:

定義兩個指標表示隊頭和隊尾:head,tail

插入:隊尾插入 x,queue[tail++] = x

彈出:隊頭彈出:head++

判斷空:head == tail

訪問隊首元素:queue[head]

上述操作建立在初始化:head = 0, tail = 0 的基礎上

當初始化為:head = 0, tail = -1 時,在插入和判斷空的操作上有些許不同:

插入:queue[++tail]

判空:head > tail

例題

829. 模擬佇列 - AcWing題庫

#include <iostream>
#include <string>
using namespace std;

const int N = 1e5 + 5;
int queue[N], head, tail;

int main()
{
    string op;
    int T, x;
    cin >> T;
    while(T--)
    {
        cin >> op;
        if(op == "push")
        {
            cin >> x;
            queue[tail++] = x;
        }
        else if(op == "pop")
        {
            head++;
        }
        else if(op == "empty")
        {
            cout << (head == tail ? "YES" : "NO") << endl;
        }
        else
        {
            cout << queue[head] << endl;
        }
    }
    return 0;
}