概念:栈是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈的顶。对栈的基本操作有push 和Pop,前者进栈相当于插入操作,后者出栈相当于删除操作。栈也是种进过变种的线性表(后进先出)
这里写图片描述
下图表示进过诺干操作过后一个抽象的栈,
这里写图片描述

<?php
/**
 * Created by PhpStorm.
 * User: think
 * Date: 2016/2/14
 * Time: 16:41
 */

class Stack {
    private $top=-1; //默认是-1,表示该栈是空的
    private $maxSize=5; //$maxSize表示栈最大容量
    private $stack=array();

    //入栈的操作
    public function push($val){
        //先判断栈是否已经满了
        if($this->top==$this->maxSize-1){
            echo'<br/>栈满,不能添加';
            return;
        }
        $this->top++; //先加再放
        $this->stack[$this->top]=$val; //就入栈了
    }

    //出栈的操作,就是把栈顶的值取出
    public function pop(){
        //判断是否栈空
        if($this->top==-1){
            echo'<br/>栈空';
            return;
        }
        //把栈顶的值,取出
        $topVal=$this->stack[$this->top];
        $this->top--;
        return $topVal;
    }

    //显示栈的所有数据的方法
    public function showStack(){
        if($this->top==-1){
            echo'<br/>栈空';
            return;
        }
        echo'<br/>当前栈的情况是...';
        for($i=$this->top;$i>-1;$i--){ //反着显示
            echo'<br/>stack['.$i.']='.$this->stack[$i]; //从栈顶开始显示
        }
    }


}

$mystack=new Stack;
$mystack->push('test1');
$mystack->push('test2');
$mystack->push('test3');
$mystack->push('test4');
$mystack->push('test5');
$mystack->push('test6');
//$mystack->showStack();

$val=$mystack->pop();
echo'<br/>pop出栈了一个数据'.$val;
$mystack->showStack();

/*$val=$mystack->pop();
echo'<br/>pop出栈了一个数据'.$val;
$mystack->showStack();

$val=$mystack->pop();
echo'<br/>pop出栈了一个数据'.$val;
$mystack->showStack();

$val=$mystack->pop();
echo'<br/>pop出栈了一个数据'.$val;
$mystack->showStack();

$val=$mystack->pop();
echo'<br/>pop出栈了一个数据'.$val;
$mystack->showStack();*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值