最近在面試的時候被問到棧,回來做個總結,希望對大家有幫助
棧是線性表的一種,他的特點是后入先出,可以這么理解,棧就像一個存東西的盒子,先放進去的在最底層,后放進去的在上層,因為上層的東西把底層的東西壓住了,下層的想要出去就必須把上層的先拿開才行。
介紹代碼:
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
