php 栈、 出栈、入栈
最近在面试的时候被问到栈,回来做个总结,希望对大家有帮助
栈是线性表的一种,他的特点是后入先出,可以这么理解,栈就像一个存东西的盒子,先放进去的在最底层,后放进去的在上层,因为上层的东西把底层的东西压住了,下层的想要出去就必须把上层的先拿开才行。
介绍代码:
data类:就是存放数据的类。()就是要放入栈的东西
stack类:是栈的类,整个对栈就在这个类中
主要方法:
入栈push_stack($data)检测栈是否已满,如果没满就让数据入栈。
出栈pop_stack($data)检测栈是否为空,如果不空可以出栈
读取栈顶元素top_stack()如果栈不空,返回当前栈顶部的数据。
下边是代码:
<?php class data{ private $data; public function __construct($data){ $this->data = $data; echo $data.":入栈成功!"; } public function getDate(){ return $this->data; } public function __destruct(){ echo $data.":出栈!"; } } class stack{ private $size; private $top; private $stack = array(); public function __construct($size){ $this->Init_Stack($size); } //初始化栈 public function Init_Stack($size){ $this->size = $size; $this->top = -1; } //判断栈是否为空 public function Empty_Stack(){ if($this->top==-1)return -1; else return 0; } //判断栈是否已满 public function Full_Stack(){ if($this->top<$this->size-1)return 0; else return 1; } //入栈 public function Push_Stack($data){ if($this->Full_Stack()) echo "栈满了!"; else $this->stack[++$this->top] = new data($data); } //出栈 public function Pop_Stack(){ if($this->Empty_Stack()) echo "栈空"; else unset($this->stack[$this->top--]); } //读取栈顶元素 public function Top_Stack(){ return $this->Empty_Stack()?"栈空没有数据!" : $this->stack[$this->top]->getData(); } } $stack=new stack(4); $stack->Pop_Stack(); $stack->Push_Stack("aa"); $stack->Push_Stack("aa1"); $stack->Pop_Stack("aa1"); $stack->Push_Stack("aa2"); $stack->Push_Stack("aa3"); $stack->Push_Stack("aa4"); echo $stack->Top_Stack(),'<br />'; $stack->Push_Stack("aa5"); $stack->Push_Stack("aa6"); $stack->Pop_Stack(); $stack->Pop_Stack(); $stack->Pop_Stack(); $stack->Pop_Stack(); $stack->Pop_Stack(); $stack->Pop_Stack();
本帖并非原创,来源:https://blog.csdn.net/binbin1129/article/details/5667255