说明:该文章是用数组来实现栈,所以主要会对数组做逻辑操作(数组的逻辑操作在上文有提到 https://segmentfault.com/a/11...)
1. 实现逻辑
<?php
/**
* content: 数组栈的实现
* create: 2020-10-20
*/
namespace StackBundle;
use ArrayBundleBaseArray;
class BaseArrayStack
{
/**
* 数组类
* @var BaseArray
*/
protected $baseArray;
public function __construct(BaseArray $baseArray)
{
$this->baseArray = $baseArray;
}
/**
* 弹出栈顶元素
* @return mixed
*/
public function pop()
{
return $this->baseArray->del($this->baseArray->getSize() - 1);
}
/**
* 从栈顶插入元素
* @param mixed $value
*/
public function push($value): void
{
$this->baseArray->addLast($value);
}
/**
* 获取栈顶元素
* @return mixed
*/
public function getTopValue()
{
return $this->baseArray->getLast();
}
/**
* 打印数组内容
* @return string
*/
public function __toString()
{
return (string)$this->baseArray;
}
}
2. 执行逻辑
<?php
require_once __DIR__. '/../vendor/autoload.php';
$stack = new StackBundleBaseArrayStack(new ArrayBundleBaseArray(1));
// 从末尾插入5个元素
$stack->push('a');
$stack->push('b');
$stack->push('c');
$stack->push('d');
$stack->push('e');
// 弹出4个元素
echo $stack->pop(). PHP_EOL;
echo $stack->pop(). PHP_EOL;
echo $stack->pop(). PHP_EOL;
echo $stack->pop(). PHP_EOL;
// 获取栈顶元素
echo $stack->getTopValue(). PHP_EOL;
// 输出在栈中存在的元素
echo $stack;
3. 打印结果
e
d
c
b
a
Array: size = 1, capacity = 1
[a]
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。