php队列的使用,PHP使用栈实现队列

学习下队列,通过栈来实现队列

思路:准备两个栈 inStack、outStack

入队时,push 到 inStack 中

出队时,(1):如果 outStack是空的,将 inStack 所有的元素逐一弹出,push 到 outStack,outStack 弹出栈顶元素

(2):如果 outStack 不为空,outStack 弹出栈顶元素

php实现代码<?php

/**

* 队列

* 使用栈实现队列

* https://leetcode-cn.com/problems/implement-queue-using-stacks/

* 1:准备两个栈 inStack、outStack

* 2: 入队时,push 到 inStack 中

* 3:出队时,

* (1):如果 outStack是空的,将 inStack 所有的元素逐一弹出,push 到 outStack,outStack 弹出栈顶元素

* (2):如果 outStack 不为空,outStack 弹出栈顶元素

*/

require '../stack/Stack.php';

class Queue

{

protected $inStack;

protected $outStack;

public function __construct()

{

$this->inStack = new Stack();

$this->outStack = new Stack();

}

/**

* @param $item

* push 一个元素

* 入队

*/

public function push($item)

{

$this->inStack->push($item);

}

/**

* 弹出一个元素

* 出队

*/

public function pop()

{

$this->checkOutStack();

return $this->outStack->pop();

}

/**

* 获取队头元素

*/

public function peek()

{

$this->checkOutStack();

return $this->outStack->top();

}

/**

* Returns whether the queue is empty.

* @return Boolean

*/

public function empty()

{

return $this->inStack->isEmpty() && $this->outStack->isEmpty();

}

private function checkOutStack(){

if ($this->outStack->isEmpty()) {

// 如果出队(outStack)的栈是空的, 将入队(inStack)的栈元素全部弹出并放到 出队的栈 outStack

while (!$this->inStack->isEmpty()) {

$this->outStack->push($this->inStack->pop());

}

}

}

}

源代码下载:gitee

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值