//方法一:没有用到栈
$queue=array();
function mypush($node)
{
global $queue;
array_push($queue,$node);//入队列
}
function mypop()
{
global $queue;
return array_shift($queue);
}
//方法二:用到Splstack类 此类为先进后出
$a= new SplStack();
$b= new SplStack();
function mypush($node)
{
global $a;
$a->push($node);//入栈
}
function mypop()
{
global $a;
global $b;
//a的出栈->b的入栈->b的出栈
if($b->isEmpty()){
while(!$a->isEmpty()){
$b->push($a->pop());
}
}
return $b->pop();
}
//方法三:数组模拟两个栈 执行a的入栈->a的出栈->b的入栈->b的出栈
$a= array();
$b= array();
function mypush($node)
{
global $a;
global $b;
array_push($a,$node);//入栈
}
function mypop()
{
global $a;
global $b;
//a的出栈->b的入栈->b的出栈
if(empty($b)){
while(!empty($a)){
array_push($b,array_pop($a));
}
}
return array_pop($b);
}