题目描述
实现一个队列,队列初始为空,支持四种操作:
(1) “push x” – 向队尾插入一个数x;
(2) “pop” – 从队头弹出一个数;
(3) “empty” – 判断队列是否为空;
(4) “query” – 查询队头元素。
现在要对队列进行M个操作,其中的每个操作3和操作4都要输出相应的结果。
输入样例
10
push 6
empty
query
pop
empty
push 3
push 4
pop
query
push 6
输出样例
NO
6
YES
4
C++ 代码
#include <iostream>
using namespace std;
const int N = 100010;
int q[N], hh, tt = -1;
//添加元素
void push(int x)
{
q[++tt ] = x;
}
//删除元素
void pop()
{
hh++;
}
//是否为空
bool empty()
{
if(hh<= tt)
{
return false;
}
else
return true;
}
//返回队首元素
int query()
{
return q[hh];
}
int main()
{
int m;
cin >> m;
while(m--)
{
string s;
int x;
cin >> s;
if(s == "push")
{
cin >> x;
push(x);
}
else if(s == "pop")
{
pop();
}
else if(s == "query")
{
cout << query() << endl;
}
else if( s == "empty")
{
cout << (empty() ? "YES" : "NO") << endl;
}
}
return 0;
}
封装用class比较好吧?
这里的话只是相当于封装成函数了。看之前那个模拟链表都是用的函数,所以这里也用函数封装。如果用class封装的话不如直接调用stl了,写太麻烦了。
其实class封装不是很麻烦