最近經常被問棧和隊列的算法題,以前對鏈表,二叉樹有了解,棧和隊列感覺有點迷糊,后來查看了后,發現就是利用數組模擬先進先出和先進后出的情況。
瞬間感覺問這個不如問鏈表呢。
下面回歸正題:先看棧
<?php class Stack{ public static $dataInfo = array(); public static $theMax= 10; public static $length=0; // public static $stackInfo; public function addData($data){ if(self::$length >= self::$theMax){ return false; }else{ array_push(self::$dataInfo,$data); self::$length ++; } } public function outData(){ if(self::$length<=0 ){ return false; }else{ $data = array_pop(self::$dataInfo); self::$length --; return $data; } } public function getAll(){ foreach (self::$dataInfo as $value) { // code.. print_r($value); } } } $a = new Stack(); $a->addData(1); $a->addData(3); $a->addData(5); $a->getAll(); print_r($a->outData()); ?>
同理,隊列也是一樣的 只不過可以把array_pop()換成array_shift()。
有什么問題歡迎隨時提問。