今天開始進階本身的PHP,首先一切的編程語言都需要修煉本身的「內功」,何爲程序猿的「內功」,我想大概就是數據結構和算法了吧 。畢竟是靈魂,是普通程序猿到高級程序猿的進階。php
很少說。直接說主題——「棧」。算法
什麼是棧,所謂棧就是遵循「後進先出」的原則。編程
先進棧的最後出棧。數組
用PHP實現棧無需考慮棧溢出的狀況,相對來講比較easy實現,例如如下是通過學習和參考後的代碼。數據結構
//定義入棧操做
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,測試成功。
小弟僅僅是淺談,假設哪裏不到位還但願請教。數據結構和算法