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实现队列,真实的队列要求可靠性,稳定性,高性能……比这要复杂。
比如:出队列后,下一步没执行成功,怎么办?是否重新执行几次,还是不成功,还要考虑是否重新入队等等很多问题点要考虑。队列还要考虑原子性,你不能并发入队吧。