理论知识:
栈:先进后出
队列:两头都可进出,一般是先进先出,若封住一头,就可以做栈使用
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;
}
};
文章介绍了如何使用栈来模拟实现队列的功能,以及如何使用队列来实现栈的功能。在LeetCode上,这两个问题分别对应于L232和L225题。在栈实现队列时,主要利用了栈的特性进行入队和出队操作;而在队列实现栈时,通过队列的添加和删除操作达到类似栈的效果。

被折叠的 条评论
为什么被折叠?



