zoukankan      html  css  js  c++  java
  • stack_2.由两个栈组成队列

    思路:
    用两个栈($stack_a, $stack_b),当push的时候,压入$stack_a, 让pop的时候,先把$stack_a元素依次全部倒入$stack_b中,再对$stack_b进行pop,然后再还原$stack_a,$stack_b(把$stack_b倒入stack_a)

    <?php
    
    class StackQueue
    {
        public $stack_a;
        public $stack_b;
    
        public function __construct()
        {
            $this->stack_a = new SplStack();
            $this->stack_b = new SplStack();
        }
    
        public function pop()
        {
            $this->exchange($this->stack_a, $this->stack_b);
            $pop = $this->stack_b->pop();
            $this->exchange($this->stack_b, $this->stack_a);
            return $pop;
        }
    
        public function push($value)
        {
            $push = $this->stack_a->push($value);
            return $push;
        }
    
        public function exchange($stack_a, $stack_b)
        {
            $count = $stack_a->count();
            for ($i = 0; $i < $count; $i++) {
                $pop = $stack_a->pop();
                $stack_b->push($pop);
            }
        }
    }
    
    $StackQueue = new StackQueue();
    $StackQueue->push(1);
    $StackQueue->push(2);
    
    echo $StackQueue->pop();
    echo $StackQueue->pop();
    
  • 相关阅读:
    栅格系统
    JQuery
    week 4
    week 1
    js嵌套,BOM,DOM,内置对象,数组,自定义对象,正则表达式
    week 2
    case when的两种用法
    获取当前路径
    parse,tryparse区别
    parse ,tryparse 续
  • 原文地址:https://www.cnblogs.com/wangweiwen/p/6363376.html
Copyright © 2011-2022 走看看