zoukankan      html  css  js  c++  java
  • php 实现栈结构

    一、栈的定义及知识

      1.定义:栈又称为栈或者堆叠,是计算机科学中的一种特殊的串列形式的抽象数据类型,特殊之处在于只允许在链表或者数组的一端(堆栈顶端指针,又称 "top")加入数据push(压栈)和输出数据pop(弹栈),另外栈也可以使用一维数组和链表来实现。

      2.栈的特点:

        a.先进后出(后进先出),也就是说,我们只能在栈顶端push(压栈)加入数据,也只能在栈顶端pop(弹栈)删除数据;

        b.栈除了top(栈顶)和base(栈底)之外,其他的每个元素都有一个前驱和后继;

    二、php简单实现栈结构

    <?php
    class HeapStack{
        private $stackArr = array();
        private $stackMaxTop = 10; // 栈顶最大值(用于控制栈长度,是否栈满)
        private $top = -1; // 栈顶(会随着push或pop的操作而变化)
        private $out;
    
        /**
         * 入栈
         *
         */
        public function pushValue($value='')
        {
            if(empty($value))
                return '压入的值不能为空';
    
            if($this->top == $this->stackMaxTop)
                return '栈内已满';
            array_push($this->stackArr, $value);
            ++$this->top;
            return '入栈成功,栈顶值:'.$this->top;
        }
    
        /**
         * 出栈
         *
         */
        public function popValue()
        {
            if($this->top == -1)
                return '栈内没有数据';
    
            $this->out = array_pop($this->stackArr);
            --$this->top;
            return '出栈成功,当前栈顶值:'.$this->top.'出栈值:'.$this->out;
        }
    
        /**
         * 获取栈内信息
         */
        public function getSatck()
        {
            return $this->stackArr;
        }
    
        public function __destruct()
        {
            echo 'over ';
        }
    }
    
    $stack = new HeapStack();
    echo $stack->pushValue('stackValue')."
    ";
    echo $stack->pushValue('stackValue2')."
    ";
    var_dump($stack->getSatck());
    echo $stack->popValue()."
    ";
    var_dump($stack->getSatck());
  • 相关阅读:
    cogs 896. 圈奶牛
    bzoj 1670: [Usaco2006 Oct]Building the Moat护城河的挖掘
    bzoj 1007: [HNOI2008]水平可见直线
    bzoj 3673: 可持久化并查集 by zky
    bzoj 3545: [ONTAK2010]Peaks
    bzoj 1901: Zju2112 Dynamic Rankings
    动态 K th
    poj 2104 K-th Number
    bzoj 3657 斐波那契数列(fib.cpp/pas/c/in/out)
    青蛙的约会
  • 原文地址:https://www.cnblogs.com/zengguowang/p/9349253.html
Copyright © 2011-2022 走看看