理论知识:
栈:先进后出
队列:两头都可进出,一般是先进先出,若封住一头,就可以做栈使用
http://L232用栈实现队列https://leetcode.cn/problems/implement-queue-using-stacks/submissions/
class MyQueue {
public:
stack<int>stIn;
stack<int>stOut;
MyQueue() {
}
void push(int x) {
stIn.push(x);
}
int pop() {
if (stOut.empty())
{
while (!stIn.empty())
{
stOut.push(stIn.top());
stIn.pop();
}
}
int result = stOut.top();
stOut.pop();
return result;
}
int peek()
{
int result = this->pop();
stOut.push(result);//将其重新插入队头
return result;
}
bool empty() {
if (stIn.empty() && stOut.empty())
return true;
else return false;
}
};
知道如何用栈实现队列,那用队列来实现栈也就不难了
http://L225用队列来实现栈https://leetcode.cn/problems/implement-stack-using-queues/submissions/
class MyStack {
public:
deque<int>sta;
MyStack() {
}
void push(int x) {
sta.push_back(x);
}
int pop() {
if (!sta.empty())
{
int result = sta.back();//取最后一个值
sta.pop_back();//将其弹出
return result;
}
else return 0;
}
int top() {
if (!sta.empty())
{
int result = sta.back();//取最后一个值
return result;
}
else return 0;
}
bool empty() {
if (sta.empty())
{
return true;
}
else return false;
}
};