道者编程


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实现队列,真实的队列要求可靠性,稳定性,高性能……比这要复杂。

比如:出队列后,下一步没执行成功,怎么办?是否重新执行几次,还是不成功,还要考虑是否重新入队等等很多问题点要考虑。队列还要考虑原子性,你不能并发入队吧。

 


最新评论:
我要评论:

看不清楚


道知

about me

身体是革命的本钱,健身,养生,运动,公众号都有!

链接