php栈定义,浅谈PHP数据结构之栈

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

20180111000831202570.png

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

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

20180111000831204523.jpg

先进栈的最后出栈。

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

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.假设须要进行十进制以上的进制转换须要添加功能)

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

$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,測试成功。

小弟仅仅是浅谈,假设哪里不到位还希望请教。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值