两个栈实现一个队列

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。


看到好多人的测试用例也通过了,但是不是用的两个栈实现一个队列的,栈的操作只有push和pop。比如下面这个直接用了一个队列来实现

<?php
$a=array();
function mypush($node)
{
    // write code here
    global $a;
    return array_push($a,$node);
}
function mypop()
{
    // write code here
    global $a;
    return array_shift($a);
}

这是两个栈模拟的,取数据前先把栈1的pop到2,取完栈2顶部的数据,然后在将数据push到1里面去。

<?php
$stack1 = array();
$stack2 = array();
function mypush($node)
{
    // write code here
    GLOBAL $stack1;
    array_push($stack1,$node);
}
function mypop()
{
    // write code here
    GLOBAL $stack1,$stack2;
    while(count($stack1)>0){
        array_push($stack2,array_pop($stack1));
    }
    $top = array_pop($stack2);
    while(count($stack2)>0){
        array_push($stack1,array_pop($stack2));
    }
    return $top;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容