原题截图

两个栈stack1、stack2 栈stack1用来作入队列。 栈stack2用来出队列,当栈stack2为空时,栈stack1全部出栈到栈stack2,栈stack2再出栈(即出队列)。
$stack1 = $stack2 = [];
function mypush($node)
{
global $stack1;
array_push($stack1, $node);
}
function mypop()
{
global $stack1;
global $stack2;
if (empty($stack2)) {
while (!empty($stack1))
array_push($stack2, array_pop($stack1));
}
return empty($stack2) ? NULL : array_pop($stack2);
}
虽然写出了解题方法,但是本菜也有疑问。 如果在出栈的同时有入栈操作或多线程并发的情况 下这类问题是不是就没办法解决了呢,愿大牛看到给予指导。