PHP实现的栈数据结构示例【入栈、出栈、遍历栈】

这篇文章主要介绍了PHP实现的栈数据结构,结合实例形式分析了php定义栈及入栈、出栈、遍历栈等相关操作技巧,需要的朋友可以参考下。

本文实例讲述了PHP实现的栈数据结构,分享给大家供大家参考,具体如下:

利用php面向对象思想,栈的属性有top、最大存储数、和存储容器(这里利用了php数组)。

代码如下:实现了入栈、出栈、遍历栈的几个方法:

  1. <?php
  2. class Stack{
  3. const MAXSIZE = 4;// 栈最大容量
  4. private $top = -1;
  5. private $stack = array();// 利用数组存储数据
  6. public function __construct(){
  7. $this->stack = array();
  8. }
  9. // 入栈
  10. public function push($ele){
  11. if ($this->top >= self::MAXSIZE-1){
  12. echo 'stack is full...';
  13. return false;
  14. }
  15. $this->stack[++$this->top] = $ele;// 此处必须是++i,先计算再使用
  16. }
  17. // 出栈,返回出栈元素
  18. public function pop(){
  19. if ($this->top == -1){
  20. echo 'stack is empty...';
  21. return false;
  22. }
  23. $ele = $this->stack[$this->top];
  24. unset($this->stack[$this->top--]);// 此处必须是i--,先使用再计算(注意出栈和入栈的区别)
  25. return $ele;
  26. }
  27. // 遍历栈
  28. public function show(){
  29. if ($this->top == -1){
  30. echo 'stack is empty...';
  31. return false;
  32. }
  33. for($i=$this->top; $i>-1; $i--){
  34. echo $this->stack[$i].'<br/>';
  35. }
  36. }
  37. }
  38. $stack = new Stack;
  39. $stack->push(1);
  40. $stack->push(2);
  41. $stack->push(3);
  42. $stack->push(4);
  43. //print_r($stack);
  44. $stack->show();
  45. $a = $stack->pop();
  46. $a = $stack->pop();
  47. $a = $stack->pop();
  48. $stack->show();

运行结果:

4
3
2
1
1