/** * 通过 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; } return array_pop($this->_stack); } // 推送元素到栈顶 public function push($value) { // 满栈 if (count($this->_stack) == $this->_size) { return false; } 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
在 PHP 底层 SPL 库中也提供了堆栈的实现类 SplStack,堆栈的概念比较简单,理解起来也不复杂,下面给出一个图示,帮助你形象了解栈的操作流程:
堆栈在日常开发和软件使用中,应用非常广泛,比如我们的浏览器前进、倒退功能,编辑器/IDE 中的撤销、取消撤销功能,程序代码中的函数调用、递归、四则运算等等,都是基于堆栈这种数据结构来实现的,就连著名的 stackoverflow 网站也是取「栈溢出」,需要求教之意。
原文:https://www.cnblogs.com/mzhaox/p/11294213.html