解题思路
这道题使用两个栈
来完成即可,一个入栈,一个出栈
。
出队列(返回队列头)流程图:
入队
入队直接在入栈
中插入元素即可,无需过多条件。
判断队列是否空
这个需要注意,要判断两个栈都为空
时,才能为空
代码实现
public class leetcode232 {
// 入栈
private Stack inStack = new Stack();
// 出栈
private Stack outStack = new Stack();
/** Initialize your data structure here. */
public leetcode232() {
}
// 出队
public int pop() {
if(outStack.isEmpty()){
// 把inStack中的元素移到outStack中
while(!inStack.isEmpty()){
outStack.push(inStack.pop());
}
}
return (int) outStack.pop();
}
// 返回队列中头元素
public int peek() {
if(outStack.isEmpty()){
while(!inStack.isEmpty()){
outStack.push(inStack.pop());
}
}
// 只有这里调用的栈函数不一样
return (int) outStack.peek();
}
// 判断列队是否为空
public boolean empty() {
return inStack.isEmpty() && outStack.isEmpty();
}
// 入队列
public void push(int x) {
inStack.push(x);
}
}