在讲解题之前我们先回顾一下栈和队列的定义。
栈的是 FILO 先进后出
队列是 FIFO 先进先出
题目
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
思路
这题匝一看,不知道题目什么意思。 其实这题就是让我们用两个栈,一个来模拟队列的入队列的操作,一个拿来做出队列的操作。
然后我们栈的方式时 FILO 的方式 而队列是 FIFO 的方式。
当队列入栈时,我们让 栈A 来接受他的出栈, 当队列出栈时, 我们让 栈A全部出栈到B来,然后 B 出栈
即
此时我们的栈B再出栈,就相当于 出队列A的首部
解答
java 版
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() {
if(stack2.empty()){
while(!stack1.empty()){
stack2.push(stack1.pop());
}
}
return stack2.pop();
}
}
php 版
$stack = [];
function mypush($node)
{
global $stack;
return $stack[] =$node;
}
function mypop()
{
// write code here
global $stack;
if(!$stack){
return null;
}
return array_shift($stack);
}
因为php的数组助手函数太强大了,所以几乎是无所不能的,写php的代码权当是复习php的助手函数。