多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
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). ~~~ class MyStack { Queue<Integer> queue1 = new LinkedList<Integer>(); Queue<Integer> queue2 = new LinkedList<Integer>(); Queue<Integer> q = new LinkedList<Integer>(); public void push(int x) { queue1.offer(x); } public void pop() { while(queue1.size()>1) queue2.offer(queue1.poll()); queue1.poll(); Queue<Integer> q = queue1; queue1 = queue2; queue2 = q; } public int top() { while(queue1.size()>1) queue2.offer(queue1.poll()); int x = queue1.poll(); queue2.offer(x); Queue<Integer> q = queue1; queue1 = queue2; queue2 = q; return x; } public boolean empty() { return queue1.isEmpty(); } } ~~~