PHP实现简单顺序栈
生活随笔
收集整理的這篇文章主要介紹了
PHP实现简单顺序栈
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
棧與數組:php數組也有壓入壓出的方法array_push 和array_shift。是不是數組就是棧數據結構?或者明明數組就可完成,為何還要棧
解答:去全國各地都可以用雙腿走到,為何選擇火車飛機?數組就是腿,棧就是火車飛機。首先不相等,其次棧可以讓我們集中精力去解決更加核心的業務需求。
簡單順序棧實現
class?Data{private?$data;?public?function?__construct($data){$this->data=$data;?????????}?public?function?getData(){return?$this->data;} }?class?Stack{private?$size;private?$top;//棧頂的標識private?$stack=array();public?function?__construct($size){return?$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;elsereturn?0;}public?function?Full_Stack(){if($this->top<($this->size-1))?return?0;elsereturn?1;} //入棧 //本來打算直接算入Data對象,后來試驗了下好像有個小問題,就是單例的問題吧,看來還是需要每次都新建一個 /** *@param?$data?class?Data?的成員 * **/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?"??諢o數據!";elseunset($this->stack[$this->top--]);}//讀取棧頂元素public?function?Top_Stack(){return?$this->Empty_Stack()?"??諢o數據":$this->stack[$this->top]->getData();/*return?$this->Empty_Stack()?"??諢o數據!":$this->stack[$this->top]->getData();?*/} }//測試 //$data1?=new?Data('hello'); $data1='mini'; $stock?=new?Stack(5);? $stock->Push_Stack('jack'); $stock->Push_Stack($data1); $stock->Push_Stack($data1); $stock->Push_Stack($data1); $stock->Empty_Stack(); $stock->Pop_Stack(); $stock->Pop_Stack(); $stock->Pop_Stack(); //$stock->Pop_Stack(); $stock->Push_Stack(''); //$stock-> echo?$stock->Top_Stack(); ?>關于循環鏈表和雙向鏈表,沒有再寫。順序存儲還是比較好理解。
補充關于棧的軟件應用:Word,PS,瀏覽器常用的撤銷或者后退
補充棧擁有線性表的所有特性:上面是可以補充進來幾個函數:DestroyStack(銷毀)ClearStack(清空)StackLength(長度)。所有函數只是一次演練,熟悉下思路,下次寫任何業務邏輯,符合需要的話可以直接使用該思想
轉載于:https://blog.51cto.com/10725691/1948667
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的PHP实现简单顺序栈的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5.SFB边缘安装
- 下一篇: Vue + VueRouter + Vu