本文共 1178 字,大约阅读时间需要 3 分钟。
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通队列的全部四种操作(push、top、pop 和 empty)。
实现 MyStack 类:
void push(int x) 将元素 x 压入栈顶。
int pop() 移除并返回栈顶元素。 int top() 返回栈顶元素。 boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。输入:
["MyStack", "push", "push", "top", "pop", "empty"] [[], [1], [2], [], [], []] 输出: [null, null, null, 2, 2, false]
class MyStack { Queuequeue1; Queue queue2; /** Initialize your data structure here. */ public MyStack() { queue1=new LinkedList (); queue2=new LinkedList (); } /** Push element x onto stack. */ public void push(int x) { queue2.offer(x); while(!queue1.isEmpty()){ queue2.offer(queue1.remove()); } //交换queue1 queue2 Queue temp=queue1; queue1=queue2; queue2=temp; } /** Removes the element on top of the stack and returns that element. */ public int pop() { return queue1.remove(); } /** Get the top element. */ public int top() { return queue1.peek(); } /** Returns whether the stack is empty. */ public boolean empty() { return queue1.isEmpty(); }}
转载地址:http://zyazb.baihongyu.com/