博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈PHP数据结构之栈
阅读量:7246 次
发布时间:2019-06-29

本文共 1621 字,大约阅读时间需要 5 分钟。

今天開始进阶自己的PHP,首先一切的编程语言都须要修炼自己的“内功”,何为程序猿的“内功”,我想大概就是数据结构和算法了吧 。毕竟是灵魂,是普通程序猿到高级程序猿的进阶。

http://pic002.cnblogs.com/images/2012/152332/2012060200472563.png

不多说。直接说主题——“栈”。

什么是栈,所谓栈就是遵循“后进先出”的原则。

http://pic002.cnblogs.com/images/2012/152332/2012060111254129.jpg

先进栈的最后出栈。

用PHP实现栈无需考虑栈溢出的情况,相对来说比較easy实现,例如以下是经过学习和參考后的代码。

<?php
class Stack{
    private $data=array();//定义栈
    private $end=NULL;//定义栈指针。也成为栈顶。
    //定义入栈操作
    public function push($data){
        if($this->end===NULL)
            $this->end=0;
        else
            $this->end++;
        $this->data[$this->end]=$data;
        //php为弱类语言,不用考虑溢出情况
    }
    //出栈
    public function pop(){
        if(empty($this->data))
            return false;
        $ret=$this->data[$this->end];
        array_splice($this->data,$this->end);//弹出后数组前移一位
        $this->end--;
        return $ret;
    }
    //取栈
    public function get_stack(){
        return $this->data;
    }
}
?>
以上就是栈的基本操作,然后顺便利用写出来的栈实现了一个在线十进制转换N工具。(N小于等于10.假设须要进行十进制以上的进制转换须要添加功能)
<?php
class Stack{
    private $data=array();//定义栈
    private $end=NULL;//定义栈指针,也成为栈顶。

    //定义入栈操作
    public function push($data){
        if($this->end===NULL)
            $this->end=0;
        else
            $this->end++;
        $this->data[$this->end]=$data;
        //php为弱类语言,不用考虑溢出情况
    }
    //出栈
    public function pop(){
        if(empty($this->data))
            return false;
        $ret=$this->data[$this->end];
        array_splice($this->data,$this->end);//弹出后数组前移一位
        $this->end--;
        return $ret;
    }
    //取栈
    public function get_stack(){
        return $this->data;
    }
    //定义进制转换函数
    public function transform($num,$to_num){
        $result=NULL;//定义结果
        while($num!=0){
            $num_y=$num%$to_num;
            $num=$num/$to_num;
            $this->push($num_y);
            if($num<$to_num){
            $this->push(intval($num));
            $num=0;
            }
        }
        while(!empty($this->get_stack())){
            echo $this->pop();
        }
        return true;
    }
}
$a=new Stack;
$b=10;//须要转换的十进制数
$c=5;//须要转换的进制
$result=$a->transform($b,$c);
?>
下面为执行结果为20,測试成功。
小弟仅仅是浅谈,假设哪里不到位还希望请教。

转载于:https://www.cnblogs.com/clnchanpin/p/7295442.html

你可能感兴趣的文章
sendmail,mail,fetion,页面声音实现nagios报警
查看>>
硬链接和软连接
查看>>
nautilus can't be used now,due to an unexpected error解决方法
查看>>
《PHP经典实例(第二版)》(PHP Cookbook, 2nd Edition)中文版,高清扫描版[PDF]
查看>>
Spark On Yarn实战
查看>>
H3C设备与中兴89系列交换机snmp V3配置模板与kali snmpwalk配套测试
查看>>
Python编码问题
查看>>
×××LNMP环境
查看>>
linux 内核代码构架图
查看>>
FTP文件服务器搭建与应用
查看>>
openssl rand 指令解析
查看>>
ubuntu下minicom超级终端的使用方法
查看>>
迅为iTOP-4412核心板调整电压
查看>>
求两个数的最大公约数(辗转相除法)
查看>>
Linux 中gdb调试工具的使用
查看>>
设计模式系列 - 策略模式
查看>>
Windows 2012R2安装KB2919355失败
查看>>
系统集成网络工程师所具备的知识
查看>>
正则表达式
查看>>
Vue.js学习笔记: 插值
查看>>