8 - 栈(2)
225. 用队列实现栈
题目大意:
void push(int x) 将元素 x 压入栈顶。
int pop() 移除并返回栈顶元素。
int top() 返回栈顶元素。
boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。
解题思路:使用一个队列,队列输入时进行一个循环调转顺序。
代码:
class MyStack {
public:
queue<int>q;
MyStack() {
}
void push(int x) {
int n = q.size();
q.push(x);
for(int i = 0;i < n;i++){
q.push(q.front());
q.pop();
}
}
int pop() {
int x = q.front();
q.pop();
return x;
}
int top() {
return q.front();
}
bool empty() {
return q.empty();
}
};
232. 用栈实现队列
题目大意:
void push(int x) 将元素 x 推到队列的末尾
int pop() 从队列的开头移除并返回元素
int peek() 返回队列开头的元素
boolean empty() 如果队列为空,返回 true ;否则,返回 false
解题思路:两个栈,一个用于输入,另一个用于翻转。
代码:
class MyQueue {
public:
stack<int>s;
stack<int>s1;
int front;
MyQueue() {
}
void push(int x) {
if(s.empty()){
front=x;
}
s.push(x);
}
int pop() {
if(s1.empty())
{
while(!s.empty()){
s1.push(s.top());
s.pop();
}
}
int x = s1.top();
s1.pop();
return x;
}
int peek() {
if(!s1.empty())
return s1.top();
return front;
}
bool empty() {
return s1.empty()&&s.empty();
}
};
自己把自己菜哭了,日常深夜怀疑人生。