思路:

用两个栈($stack_a, $stack_b),当push的时候,压入$stack_a, 让pop的时候,先把$stack_a元素依次全部倒入$stack_b中,再对$stack_b进行pop,然后再还原$stack_a,$stack_b(把$stack_b倒入stack_a)

<?php

class StackQueue
{
public $stack_a;
public $stack_b; public function __construct()
{
$this->stack_a = new SplStack();
$this->stack_b = new SplStack();
} public function pop()
{
$this->exchange($this->stack_a, $this->stack_b);
$pop = $this->stack_b->pop();
$this->exchange($this->stack_b, $this->stack_a);
return $pop;
} public function push($value)
{
$push = $this->stack_a->push($value);
return $push;
} public function exchange($stack_a, $stack_b)
{
$count = $stack_a->count();
for ($i = 0; $i < $count; $i++) {
$pop = $stack_a->pop();
$stack_b->push($pop);
}
}
} $StackQueue = new StackQueue();
$StackQueue->push(1);
$StackQueue->push(2); echo $StackQueue->pop();
echo $StackQueue->pop();

最新文章

  1. delphi实现的RTMP播放
  2. 作业2-浅谈数组求和java实验
  3. android 中解析XML的方法(转)
  4. PHP防止SQL注入与几种正则表达式讲解
  5. onTextChanged参数解释及实现EditText字数监听
  6. HBase的rowkey的设计原则
  7. [置顶] 北漂的大三IT男(暂完)
  8. 使用ArcGIS API for Silverlight 进行复合多条件空间查询
  9. 自动删除超过30天文件的vbs脚本【转发】
  10. ASP.NET-SHA256加密方法
  11. 面向对象A 知识点总结
  12. C# Excel行高、列宽、合并单元格、单元格边框线、冻结
  13. Appium Demo
  14. Zookeeper —— 一致性协议
  15. web.py框架之基本应用
  16. 前端的重要部分js
  17. HDOJ2041_超级楼梯(斐波拉契数列)
  18. BZOJ1415[Noi2005]聪聪和可可——记忆化搜索+期望dp
  19. Linux 安装Python虚拟环境,virtualenvwrapper
  20. js中获取url后面的参数值

热门文章

  1. javascript 关于弹出新页面始终在正中央方法
  2. 【转载】通过sqlserver日志恢复误删除的数据
  3. 【WPF学习笔记】之如何设置下拉框读取SqlServer数据库的值:动画系列之(一)
  4. JavaScript -- JavaScript高级程序设计
  5. 在pycharm中误删了Python文件,怎么办,挺急的?
  6. restlet验证
  7. SecureCRT 会话设置项
  8. 如何利用Windows System Image Manager制作一个answer file
  9. 用c++后缀自动机实现最大公共字符串算法,并封装成Python库
  10. drawable canvas使用