栈有什么特点
栈遵循后进先出的原则 (LIFO)。这意味着栈只有一个出口用来压入元素和弹出元素,当我们执行压入或者弹出操作的时候要注意栈是否已满或者栈是否是空的。
栈的方法
- push
- pop
- top
- bottom
- isEmpty
- offsetSet
- offsetGet
- offsetExists
- offsetUnset
代码
<?php
header("Content-type:text/html; charset=utf-8");
$stack = new SplStack();
//LIFO
echo 'stack push',PHP_EOL;
//入栈
$stack->push('hello');
$stack->push('world');
$stack->push('web');
$stack[] = 'site';
$stack[] = 'devlop';
echo '***************',PHP_EOL;
//设置index为 0 的元素(栈顶)的值为 DEVLOP,遍历栈
$stack->offsetSet(0, 'DEVLOP');
foreach($stack as $val) {
echo $val,PHP_EOL;
}
echo '***************',PHP_EOL;
//查看栈元素个数
echo '栈内有',$stack->count(),'个元素',PHP_EOL;
echo '栈内有',count($stack),'个元素',PHP_EOL;
echo '***************',PHP_EOL;
//查看栈顶、栈底元素
echo '栈顶元素是',$stack->top(),PHP_EOL;
echo '栈底元素是',$stack->bottom(),PHP_EOL;
echo '***************',PHP_EOL;
//遍历栈
foreach($stack as $val) {
echo $val,PHP_EOL;
}
echo '***************',PHP_EOL;
//出栈
while($stack->count() != 0) {
echo '栈顶元素是:',$stack->top(),PHP_EOL;
$stack->pop();
}
输出
stack push
***************
DEVLOP
site
web
world
hello
***************
栈内有5个元素
栈内有5个元素
***************
栈顶元素是DEVLOP
栈底元素是hello
***************
DEVLOP
site
web
world
hello
***************
栈顶元素是:DEVLOP
栈顶元素是:site
栈顶元素是:web
栈顶元素是:world
栈顶元素是:hello