模擬佇列
阿新 • • 發佈:2021-08-03
模擬佇列
佇列特徵:先進先出
模擬方式:
定義兩個指標表示隊頭和隊尾: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
例題
#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; }