代码随想录算法训练营第十天|232. 用栈实现队列,225. 用队列实现栈
232. 用栈实现队列
题目链接:232. 用栈实现队列,难度:简单
【实现代码】
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;
}
return false;
}
};
【解题思路】
一个栈用作输入,一个栈用于输出,当输出的栈为空时,把输入的栈的元素放进输出的栈。
225. 用队列实现栈
题目链接:225. 用队列实现栈,难度:简单
【实现代码】
class MyStack {
public:
queue<int> quIn;
queue<int> quOut;
MyStack() {
}
void push(int x) {
quIn.push(x);
}
int pop() {
while (quIn.size() > 1) {
quOut.push(quIn.front());
quIn.pop();
}
while (!quOut.empty()) {
quIn.push(quOut.front());
quOut.pop();
}
int result = quIn.front();
quIn.pop();
return result;
}
int top() {
return quIn.back();
}
bool empty() {
return quIn.empty();
}
};
【解题思路】
一个队列用于存储,一个队列用于备份,弹出最后入栈的元素是将队列中此元素之前的元素存进用于备份的队列。实际也可以使用一个队列,也就是将此元素之前的元素再次入队。
文章介绍了如何使用栈来实现队列的功能,以及如何用队列来模拟栈的操作。在232题中,通过两个栈,一个用于输入,一个用于输出,确保了队列的FIFO特性。而在225题中,利用两个队列,通过转移元素来达到栈的LIFO特性。这两种实现都涉及到了数据结构的转换和操作。
637

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



