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.
Notes:
You must use only standard operations of a queue -- which means only push to back, peek/pop from front, size, and is empty operations are valid.
Depending on your language, queue may not be supported natively. You may simulate a queue by using a list or deque (double-ended queue), as long as you use only standard operations of a queue.
You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).
public(){ queue1 = new LinkedList<Integer>(); queue2 = new LinkedList<Integer>(); }
/** Push element x onto stack. */ publicvoidpush(int x){ if (queue1.size() == 0) { queue1.add(x); while (queue2.size() > 0) { queue1.add(queue2.poll()); } } else { queue2.add(x); while (queue1.size() > 0) { queue2.add(queue1.poll()); } }
}
/** Removes the element on top of the stack and returns that element. */ publicintpop(){ if (queue1.size() == 0) { return queue2.poll(); } else { return queue1.poll(); } }
/** Get the top element. */ publicinttop(){ if (queue1.size() == 0) { return queue2.peek(); } else { return queue1.peek(); } }
/** Returns whether the stack is empty. */ publicbooleanempty(){
return queue1.isEmpty() && queue2.isEmpty(); } }
/** * Your MyStack object will be instantiated and called as such: * MyStack obj = new MyStack(); * obj.push(x); * int param_2 = obj.pop(); * int param_3 = obj.top(); * boolean param_4 = obj.empty(); */
近期评论