思路:同样使用 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());

输出:

array0 => int 11 => int 22 => int 33 => int 44 => int 5
arrayempty
array0 => int 51 => int 42 => int 33 => int 24 => int 1
int 1

转载于:https://www.cnblogs.com/dee0912/p/4912124.html

算法与数据结构题目的 PHP 实现:栈和队列 由两个栈组成的队列相关推荐

  1. 多态指针访问虚函数不能被继承的类快速排序N皇后问题插入排序堆排序merge归并排序栈上生成对象两个栈实现一个队列...

    多态 /*1. 要想实现覆盖(重写)父类必须声明为virtual,子类可以不声明为virtual.-->FunB()2. 派生类重写基类的虚函数实现多态,要求函数名.参数列表.返回值完全相同.( ...

  2. 栈与队列2——两个栈组成队列

    题目 编写一个类,用两个栈实现一个队列,并实现队列的基本操作(add,poll,peek) 思路 一个栈stackPush作为正常压入的栈,一个栈stackPop作为弹出的栈,将stackPush中的 ...

  3. 栈一:用两个栈实现队列

    /**  * 题目:用两个栈实现队列  * 描述:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型.  * 解决方案:方法一:一个作为存储用,一个作为弹出用  * * ...

  4. 两个队列实现一个栈思路c语言,两个栈实现队列功能C语言实现能运行!

    #include #include typedef struct sq { char *ps; int top; int Maxsize; }stack; void initstack(stack * ...

  5. 用栈实现队列---用两个栈模拟实现一个队列

     入队列:直接将元素放进s1(s1栈顶为模拟队列的队尾); 出队列:如果s2非空,直接让s2出栈(s2栈顶为模拟队列的队头): 如果s2为空,将s1中所有元素导入s2中,然后让s2出栈. 获取队头元素 ...

  6. 由两个栈组成一个队列

    使用C++完成<程序员代码面试指南 IT名企算法与数据结构题目> 题目 编写一个类,用两个栈实现队列,支持队列操作: - push:入队 - pop:出队(不返回值) - front:返回 ...

  7. 微软等数据结构+算法面试100题全部答案集锦

    微软等数据结构+算法面试100题全部答案集锦 作者:July.阿财. 时间:二零一一年十月十三日. 引言 无私分享造就开源的辉煌. 今是二零一一年十月十三日,明日14日即是本人刚好开博一周年.在一周年 ...

  8. 数据结构+算法面试100题~~~摘自CSDN,作者July

    1.把二元查找树转变成排序的双向链表(树)  题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表. 要求不能创建任何新的结点,只调整指针的指向.    10   / /   6  14 ...

  9. 微软公司等数据结构+算法面试100题2010版全部出炉

    微软等公司数据结构+算法面试100题2010版首次完整亮相                         作者:July.2010年12月6日. 更新:现今,这100题的答案已经全部整理出来了,微软 ...

最新文章

  1. 做项目时用到的linux知识
  2. ASP.NET使用数据库存储、读取并修改图片
  3. python 遍历一个空列表
  4. 如何直接打开AutoCAD格式的DXF文件
  5. 高中计算机考试实施方案,山东省高中信息技术学业水平考试实施方案及思考
  6. 便携式明渠流量计的功能特点及资质证书
  7. Unity Driven 属性(代码控制属性)使用示例
  8. 正向代理与反向代理的区别
  9. SLAM闲谈(一)--词袋模型
  10. heuristic manner
  11. 前端微信一键登录和微信小程序支付总结
  12. linux ln命令详解
  13. 理财就是理生活读后感
  14. ajax与Java后台互相传数据
  15. backtrack5 初步配置
  16. 阿里云服务器的端口有什么用,常用的端口有哪些,如何配置
  17. 【Python基础语法记录】
  18. 北京一行(七)——返程
  19. vim vim-plug .vim插件安装及使用
  20. 点餐订餐系统应用android源码

热门文章

  1. Struts2-表单验证的两种方式
  2. Android SlidingMenu 开源项目 侧拉菜单的使用(详细配置)
  3. win7 下配置 Qt5.1 for Android
  4. 常考数据结构与算法:最小的k个数
  5. C六:指针可以比较大小
  6. 十分钟上线-基于函数计算开发 Restful web api asp.net core web app
  7. C基础——目标代码文件、可执行文件和库
  8. ThinkPHP的field方法的用法总结
  9. Java 求分段函数g(x)的值
  10. Autodesk PowerInspect 2021中文版