题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
解题:
如上图所示,两个栈实现队列先进先出
代码如下:
import java.util.Stack;
/**
两个栈实现一个队列描述如下:
一个栈实现入队,另一个栈实现出队
1、push函数:push用来实现入队操作,即用stack1.push(node),将node直接入stack1(入队)
2、pop函数:pop出栈需要判断stack2是否为空,若为空就不能出,需要将stack1中的节点全都入stack2
若不为空,则出栈(出队)
*/
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.push(node);
}
public int pop() {
// temp存出栈元素
Integer temp = null;
if(!stack2.empty()){
temp = stack2.pop();
}else{
//stack2为空情况,让stack1中都出栈,入stack2
while(!stack1.empty()){
stack2.push(stack1.pop());
}
//stack2不为空,则出栈(出队),stack2为空但要出栈,就先全入栈再出栈
if(!stack2.empty()){
temp = stack2.pop();
}
}
return temp;
}
}
牛客网提交后通过: