算法与数据结构题目的 PHP 实现:栈和队列 由两个栈组成的队列
2023-09-11 14:17:03 时间
思路:同样使用 PHP 的数组模拟栈。栈的特点是先进后出,队列的特点是先进先出,可以用第一个栈(StackPush)作为压入栈,压入数据的时候只往这个栈中压入数据,第二个栈作(StackPop)为弹出栈,在弹出数据的时候只从这个栈中弹出。在弹出之前,把压入栈的数据全部 弹出至 弹出栈,再把弹出栈的数据弹出。
代码:
1 <?php 2 3 class TwoStacksQueue { 4 //压入栈 5 private $StackPush = array(); 6 //弹出栈 7 private $StackPop = array(); 8 9 //压入栈 压入数据 10 public function add($pushInt) { 11 array_push($this->StackPush, $pushInt); 12 } 13 14 //将数据从压入栈 倒入 弹出栈 15 public function poll() { 16 if (empty($this->StackPush) && empty($this->StackPop)) { 17 echo 'Queue is empty.'; 18 exit(); 19 } else if (empty($this->StackPop)) { 20 while (!empty($this->StackPush)) { 21 $pop = array_pop($this->StackPush); 22 array_push($this->StackPop, $pop); 23 } 24 } 25 } 26 27 //查看弹出栈的栈顶元素 28 public function peek() { 29 if (empty($this->StackPush) && empty($this->StackPop)) { 30 echo 'Queue is empty.'; 31 exit(); 32 } else if (empty($this->StackPop)) { 33 while (!empty($this->StackPush)) { 34 $pop = array_pop($this->StackPush); 35 array_push($this->StackPop, $pop); 36 } 37 } 38 $count = count($this->StackPop); 39 return $this->StackPop[$count - 1]; 40 } 41 42 //查看压入栈 43 public function getStackPush() { 44 return $this->StackPush; 45 } 46 47 //查看弹出栈 48 public function getStackPop() { 49 return $this->StackPop; 50 } 51 } 52 53 $queue = new TwoStacksQueue(); 54 $queue->add(1); 55 $queue->add(2); 56 $queue->add(3); 57 $queue->add(4); 58 $queue->add(5); 59 var_dump($queue->getStackPush()); 60 $queue->poll(); 61 var_dump($queue->getStackPush()); 62 var_dump($queue->getStackPop()); 63 var_dump($queue->peek());
输出:
array 0 => int 1 1 => int 2 2 => int 3 3 => int 4 4 => int 5 array empty array 0 => int 5 1 => int 4 2 => int 3 3 => int 2 4 => int 1 int 1
相关文章
- php之快速入门学习-17(PHP 命名空间)
- php之快速入门学习-13(PHP 循环 - While 循环)
- PHP多维数组根据下标取值
- PHP 中 ini_set() 修改 php 内存限制及检查内存限制方法
- PHP命名空间的三种引用方式:非限定名称、限定名称、完全限定名称
- PHP二分查找算法
- 算法与数据结构题目的 PHP 实现:栈和队列 设计一个有 getMin 功能的栈
- PHP-001
- PHP 4种输出的方式
- 自学PHP与培训PHP的到底有多大的差距?
- 转 PHP界面显示中文乱码
- php base64不能解码_PHP base64编码后解码乱码的解决办法
- PHP百分号转小数,php 小数转换百分数函数
- PHP时间比较和时间差如何计算
- php数组array_push()和array_pop()以及array_shift()函数
- 深入理解php内核 编写扩展 I:介绍PHP和Zend
- PHP实现各种经典算法
- php面试题之三——PHP语言基础(基础部分)
- php写杨辉三角算法
- PHP之旅——出发(php+apache+MySQL)
- PHP自动化测试
- linux下无法执行PHP命令,错误 php: command not found
- php普通传值和引用传值 (相当通俗易懂的一篇讲解)
- php源码安全加密之PHP混淆算法.