题目:用两个栈实现队列
用两个栈实现队列一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能。
解题思路
首先了解栈:先进后出,队列:先进先出的特性;这样就可以,通过队列每进一个元素,栈1入栈一个元素,当队列需要出一个元素的时候,将栈1中的元素入栈2,然后通过栈2弹出,这样可以通过2个栈实现元素的先进先出特性。
解题代码
Stack<Integer> stack1 = new Stack<>();
Stack<Integer> stack2 = new Stack<>();
public void appendTail(int node) {
stack1.push(node);
}
public int deleteHead() {
if (stack2.isEmpty()) {
while (stack1.empty() != true) {
stack2.push(stack1.pop());
}
}
if (stack2.empty() == true) {
return -1;
}
return stack2.pop();
}
后记
摘自《剑指offter》