栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。
特点:先进后出
从栈顶放入元素的操作叫入栈,取出元素叫出栈。
栈的结构就像一个集装箱,越先放进去的东西越晚才能拿出来,所以栈常用于实现递归方面的场景,例如斐波那契数列。
php模拟栈结构
class Stack
{
private $stack = [];
//检测是否为null
public function stack_is_null()
{
if(count($this->stack) <= 0){
return null;
}
return true;
}
//进栈
public function push($value)
{
array_push($this->stack,$value);
}
//出栈
public function pop()
{
if($this->stack_is_null()){
return null;
}
array_pop($this->stack);
}
#取栈顶,取最后一个值
public function get_top()
{
if(!$this->stack_is_null()){
return null;
}
return end($this->stack);
}
//返回栈内所有元素
public function get_stack()
{
return $this->stack;
}
}
用栈解决斐波那契数问题
eg:斐波那契数,