阐明:该文章是用数组来实现队列,所以次要会对数组做逻辑操作(数组的逻辑操作在上文有提到 https://segmentfault.com/a/11…)
1. 实现逻辑
<?php
/**
* content: 数组队列的实现
* create: 2020-10-21
*/
namespace QueueBundle;
use StackBundleBaseArrayStack;
class BaseArrayQueue extends BaseArrayStack
{
/**
* 从后面插入数据
* @return mixed|null
*/
public function shift()
{return $this->baseArray->del(0);
}
/**
* 从后面弹出数据
* @param $value
*/
public function unshift($value): void
{$this->baseArray->addFirst($value);
}
}
2. 执行逻辑
<?php
<?php
require_once __DIR__. '/../vendor/autoload.php';
$queue = new QueueBundleBaseArrayQueue(new ArrayBundleBaseArray(1));
// 从开端插入 3 个元素
$queue->push('c');
$queue->push('d');
$queue->push('e');
// 从后面插入 2 个元素
$queue->unshift('b');
$queue->unshift('a');
// 打印队列
echo $queue. PHP_EOL;
// 从队列的开端弹出
echo $queue->pop(). PHP_EOL;
// 从队里的头部弹出
echo $queue->shift(). PHP_EOL;
// 打印队列
echo $queue. PHP_EOL;
3. 打印后果
Array: size = 5, capacity = 8
[a,b,c,d,e]
e
a
Array: size = 3, capacity = 4
[b,c,d]