栈与数组:php数组也有压入压出的方法array_push和array_shift。是不是数组就是栈数据结构吗?或者明明数组就可完成,为何还要栈
解答:去全国各地都可以用双腿走到,为何选择火车飞机?数组就是腿,栈就是火车飞机。首先不相等,其次栈可以让我们集中精力去解决更加核心的业务需求。
简单顺序栈实现
class 数据{ ,,private 数据;美元, ,,public function  __construct(元数据){ ,,,,,,,这个→美元美元data=https://www.yisu.com/zixun/数据; } 公共函数getData () { 返回$ this ->数据; } } 栈类{ 私人美元大小; 私人顶级美元;//栈顶的标识 私人数组$堆栈=(); 公共函数__construct(大小){ 返回$ this -> Init_Stack($大小); } 公共函数Init_Stack(大小){=$ $ this ->大小尺寸; $ this ->高级=1;//这里栈顶的位置元素 } 公共函数Empty_Stack () { if ($ this ->==1)返回1; 其他的 返回0; } 公共函数Full_Stack () { 如果($ this -> <($ this ->大小是1))返回0; 其他的 返回1; }//入栈//本来打算直接算入数据对象,后来试验了下好像有个小问题,就是单例的问题吧,看来还是需要每次都新建一个/* * * @param $ data类数据的成员 * * */公共函数Push_Stack(元数据){ 如果($ this -> Full_Stack())回声“栈满了”; ,,,,,,, ,,,,,,,,,,,这个→美元堆栈(+ + $ this→前),=,new 数据(元数据); ,,,} ,,,//出栈 ,,,public function Pop_Stack () { ,,,,,,,如果($ this→Empty_Stack ()), echo “栈空无数据!”; ,,,,,,, ,,,,,,,,,,,设置($ this→堆栈[$ this→高级——]); ,,,} ,,,//读取栈顶元素 ,,,public function Top_Stack () { ,,,,,,,return $ this→Empty_Stack() ?“栈空无数据”:$ this→堆栈($ this→高级)→getData (); ,,,,,,,/* return $ this→Empty_Stack() ?“栈空无数据!”:$ this→堆栈($ this→高级)→getData (); */,,,} }//测试//美元data1 =new 数据(“你好”); 美元data1=懊阅恪? stock 美元;=new 堆栈(5),, 美元股票→Push_Stack(‘杰克’); 美元股票→Push_Stack ($ data1); 美元股票→Push_Stack ($ data1); 美元股票→Push_Stack ($ data1); 美元股票→Empty_Stack (); 美元股票→Pop_Stack (); 美元股票→Pop_Stack (); 美元股票→Pop_Stack ();//美元股票→Pop_Stack ();////美元股票→Push_Stack (");//美元股票→ echo 股票→美元Top_Stack (); 祝辞;
关于循环链表和双向链表,没有再写。顺序存储还是比较好理解。
补充关于栈的软件应用:词,PS,浏览器常用的撤销或者后退
补充栈拥有线性表的所有特性:上面是可以补充进来几个函数:DestroyStack(销毁)ClearStack(清空)StackLength(长度)。所有函数只是一次演练,熟悉下思路,下次写任何业务逻辑,符合需要的话可以直接使用该思想