PHP使用栈实现队列2020-10-22 20:30:20
学习下队列,通过栈来实现队列
题来源力扣: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栈后端
扩展阅读