day 9
了解队列的api
pop
push
size
empty
front 队列首元素
back 队列尾元素
思路:
1. 用两个队列。
弹入:放入que1中
弹出:先将 que1 中,除了最后一个元素,其他的元素都放入que2(作为备用)。然后弹出que1,再把que2赋值给que1。再将que2清空
查看首元素:que1 使用 back 函数
是否为空:que1是否为空
class MyStack {
queue<int> queue1;
queue<int> queue2;
public:
MyStack() {
}
void push(int x) {
queue1.push(x);
}
int pop() {
int size = queue1.size();
size--; / / 先减一
while(size--)
{
queue2.push(queue1.front());
queue1.pop();
}
int res = queue1.front();
queue1.pop();
queue1 = queue2;
while(!queue2.empty())
queue2.pop();
return res;
}
int top() {
return queue1.back();
}
bool empty() {
return queue1.empty();
}
};
2.用一个队列
其他思路一样
弹出:
que中的元素,除了最后一个,其他的元素都先插入到队尾,再弹出。这样最后一个元素就会到队头。就可以直接进行弹出操作了
class MyStack {
queue<int> que;
public:
MyStack() {
}
void push(int x) {
que.push(x);
}
int pop() {
int size = que.size();
size--;
while(size--)
{
que.push(que.front());
que.pop();
}
int res = que.front();
que.pop();
return res;
}
int top() {
return que.back();
}
bool empty() {
return que.empty();
}
};