栈是线性表的一种,他的特点是后入先出,可以这么理解,栈就像一个存东西的盒子,先放进去的在最底层,后放进去的在上层,因为上层的东西把底层的东西压住了,下层的想要出去就必须把上层的先拿开才行。
定义:栈是限制插入和删除都只能发生在一个位置上进行的线性表,该位置是线性表的末端,叫做栈的顶。
口诀:“后进先出”,是老师讲过印象最深的一句话。
实现一个栈
class stack{
const maxsize= 4;
private $stack = [];
private $top = -1; //栈顶
public function __construct(){
$this->stack = $stack;
}
//入栈
public function push($item){
if($this->top>self::maxsize-1)){
return '栈满了!';
}
$this->stack[++$this->top] = $item;
}
//出栈
public function pop(){
if($this->top==-1){
return '栈空了!';
}
$item = $this->stack[$this->top];
unset($this->stack[$this->top--]);
return $item;
}
//展示栈内容
public function show(){
if($this->top==-1){
return '栈空了';
}
for($i=$this->top;$i>-1;$i--){
echo $this->stack[$i];
}
}
}