最近经常被问栈和队列的算法题,以前对链表,二叉树有了解,栈和队列感觉有点迷糊,后来查看了后,发现就是利用数组模拟先进先出和先进后出的情况。
瞬间感觉问这个不如问链表呢。
下面回归正题:先看栈
<?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()。
有什么问题欢迎随时提问。
时间: 2024-10-19 12:21:35