修煉內功---資料結構與演算法5---棧
阿新 • • 發佈:2018-12-27
<?php /** * 通過 PHP 陣列實現簡單的順序棧 */ class SimpleStack { private $_stack = []; private $_size = 0; public function __construct($size = 10) { $this->_size = $size; } // 獲取棧頂元素 public function pop() { // 空棧 if (count($this->_stack) == 0) { return false; } //array_pop() 彈出並返回 array 陣列的最後一個單元,並將陣列 array 的長度減一 //Note: 使用此函式後會重置(reset())array 指標。 //如果 array 是空(如果不是一個數組),將會返回 NULL return array_pop($this->_stack); } // 推送元素到棧頂 public function push($value) { // 滿棧 if (count($this->_stack) == $this->_size) { return false; } //array_push() 將 array 當成一個棧,並將傳入的變數壓入 array 的末尾。array 的長度將根據入棧變數的數目增加。 //Note: 如果用 array_push() 來給陣列增加一個單元,還不如用 $array[] = ,因為這樣沒有呼叫函式的額外負擔。 //返回處理之後陣列的元素個數 array_push($this->_stack, $value); return true; } public function isEmpty() { // 是否是空棧 //這個寫法很優雅 return current($this->_stack) == false; } public function size() { return count($this->_size); } } $stack = new SimpleStack(15); var_dump($stack->isEmpty()); # true $stack->push(111); $stack->push('學院君'); var_dump($stack->pop()); # 學院君 var_dump($stack->size()); # 1