题目描述:
Implement the following operations of a stack using queues.
- push(x) -- Push element x onto stack.
- pop() -- Removes the element on top of the stack.
- top() -- Get the top element.
- empty() -- Return whether the stack is empty.
Example:
MyStack stack = new MyStack(); stack.push(1); stack.push(2); stack.top(); // returns 2 stack.pop(); // returns 2 stack.empty(); // returns false
中文描述:使用队列来实现栈的功能。
解题思路:可以使用队列在实现push的时候,先把数加入,再将队列反转,后面其他的操作就和队列一样即可实现栈的取栈顶,弹栈,判断是否为空。
代码(java):
class MyStack {
/** Initialize your data structure here. */
public MyStack() {
}
Queue<Integer> q=new LinkedList<Integer>();
/** Push element x onto stack. */
public void push(int x) {
q.add(x);
int len=q.size();
while(len>1){
q.add(q.poll());
len--;
}
}
/** Removes the element on top of the stack and returns that element. */
public int pop() {
return q.poll();
}
/** Get the top element. */
public int top() {
return q.peek();
}
/** Returns whether the stack is empty. */
public boolean empty() {
return q.isEmpty();
}
}