栈(Stack)是一种特殊的线性表,因为它只能在线性表的一端进行插入或删除元素(即进栈和出栈),SplStack继承自SplDoublyLinkedList,并且mode被限制为LIFO,即后进先出模式。
<?php
/**
* @since PHP 5.3
*
* SplStack继承自SplDoublyLinkedList,关于SplDoublyLinkedList请查看之前的文章
*/
class SplStack extends SplDoublyLinkedList
{
protected $_it_mode = parent::IT_MODE_LIFO;
/**
* - SplStack允许使用两种迭代模式
* - SplDoublyLnkedList::IT_MODE_LIFO | SplDoublyLnkedList::IT_MODE_KEEP
* - SplDoublyLnkedList::IT_MODE_LIFO | SplDoublyLnkedList::IT_MODE_DELETE
*
* 默认的模式是 : SplDoublyLnkedList::IT_MODE_LIFO | SplDoublyLnkedList::IT_MODE_KEEP
* @param $mode
*/
public function setIteratorMode($mode)
{
if ($mode & parent::IT_MODE_LIFO !== parent::IT_MODE_LIFO) {
throw new RuntimeException("Iterators' LIFO/FIFO modes for SplStack/SplQueue objects are frozen");
}
$this->_it_mode = $mode;
}
}
?>