队列是一种数据结构。现在你要支持几种操作:
-
push x
,将 xx 这个元素放到队尾。 -
pop
,表示将队首的元素删除。 -
query k
,询问从队首往后数第 kk 个元素是多少。
输入格式
第一行一个整数 mm,表示操作个数。
接下来 mm 行,每行一个上面所述的操作。
输出格式
输出若干行,对于每个查询操作,输出答案。
样例输入
10
push 1
push 2
query 1
query 2
push 3
query 1
pop
query 1
push 4
query 1
样例输出
1
2
1
2
2
数据规模
对于 100%100% 的数据,保证 1≤m≤1061≤m≤106。
对于 push
操作,保证 1≤x≤1061≤x≤106。
对于 pop
操作,保证队列非空。
对于 query
操作,保证 k≥1k≥1 且 kk 不超过队列里面的元素个数。
保证所有时刻,队列长度 len≤1000len≤1000。
#include <bits/stdc++.h>
using namespace std;
const int MAX_SIZE = 1005; // 队列最大长度
int queue[MAX_SIZE]; // 队列数组
int front_ptr, rear_ptr; // 队首和队尾指针
int main() {
int m;
cin >> m;
front_ptr = rear_ptr = 0; // 初始时队列为空
while (m--) {
string operation;
cin >> operation;
if (operation == "push") {
int x;
cin >> x;
queue[rear_ptr++] = x; // 将元素放入队尾,同时队尾指针后移
} else if (operation == "pop") {
front_ptr++; // 删除队首元素,队首指针后移
} else if (operation == "query") {
int k;
cin >> k;
cout << queue[front_ptr + k - 1] << endl; // 输出第 k 个元素,注意下标偏移
}
}
return 0;
}