PHP数组实现简单队列和堆栈
一:概念:
从数据结构上来说:队列和堆栈都是线性表结构。
1:队列:先进先出,队列队列其实就是排队嘛,日常生活中肯定是先排队的先处理,所以先进先出。
2:堆栈:先进后出。
二:一些基本的PHP数组函数
array_unshift() //将一个或多个元素插入数组的末尾头部 array_push() //将一个或多个元素插入数组的末尾 array_pop() //删除数组的最后一个元素 array_shift() //删除数组中首个元素 array_slice() //返回数组中被选定的部分。 array_splice() //删除并替换数组中指定的元素
三:借用PHP强大的数组函数实现方法
<?php
class Queue
{
public $list = []; //队列
//头部入队
public function pushFirst($itme)
{
return array_unshift($this->list,$itme);
}
//尾部入队
public function pushLast($itme)
{
return array_push($this->list,$itme);
}
//头部出队
public function popFirst()
{
return array_shift($this->list);
}
//尾部出队
public function popList()
{
return array_pop($this->list);
}
//清空队列
public function empty()
{
unset($this->list); //注意,unset没有返回值,不能加return,否则报错
}
//获取队列长度
public function count()
{
return count($this->list);
}
}
$queue = new Queue;
//这是队列,先进先出
$queue->pushFirst('1'); //入队
$queue->pushFirst('2'); //入队
$queue->pushFirst('3'); //入队
$queue->popList();
print_r($queue->list);
//这是堆栈,先进后出
$queue->pushFirst('1'); //入队
$queue->pushFirst('2'); //入队
$queue->pushFirst('3'); //入队
$queue->popFirst();
print_r($queue->list);
注意:生产环境中不建议单纯用PHP实现队列,真实的队列要求可靠性,稳定性,高性能……比这要复杂。
比如:出队列后,下一步没执行成功,怎么办?是否重新执行几次,还是不成功,还要考虑是否重新入队等等很多问题点要考虑。队列还要考虑原子性,你不能并发入队吧。