棧是線性表的一種,他的特點是后入先出,可以這么理解,棧就像一個存東西的盒子,先放進去的在最底層,后放進去的在上層,因為上層的東西把底層的東西壓住了,下層的想要出去就必須把上層的先拿開才行。
介紹代碼:
data類:就是存放數據的類。()就是要放入棧的東西
stack類:是棧的類,整個對棧就在這個類中
主要方法:
入棧push_stack($data)檢測棧是否已滿,如果沒滿就讓數據入棧。
出棧pop_stack($data)檢測棧是否為空,如果不空可以出棧
讀取棧頂元素top_stack()如果棧不空,返回當前棧頂部的數據。
下邊是代碼:
<?php /** * Create On 2010-6-12 * Author Been * QQ:281443751 * Email:binbin1129@126.com **/ class data{ //數據 private $data; public function __construct($data){ $this->data=$data; echo $data.":哥入棧了!<br>"; } public function getData(){ return $this->data; } public function __destruct(){ echo $this->data.":哥走了!<br>"; } } 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 "棧滿了<br />"; else $this->stack[++$this->top]=new data($data); } //出棧 public function Pop_Stack(){ if($this->Empty_Stack())echo "棧空着呢<br />"; 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();
