php什么场景使用栈,PHP使用栈实现队列

PHP使用栈实现队列2020-10-22 20:30:20

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

题来源力扣:https://leetcode-cn.com/probl...思路:准备两个栈 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

特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。

Tags 标签php栈后端

扩展阅读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值