yikai.shao Backend Dev Engineer

用PHP数组实现的队列和栈

2018-02-01
php

队列 Quene

队列是比较常用的数据结构之一,其特点是先进先出。比如数据库请求太多,服务器一下子处理不过来的时候,就可以使用队列先将请求逐条顺序存放起来,然后逐一从队列中取出数据执行,这样便起到了分散压力的作用。

其实PHP自带的数组非常强大,有一些便捷的函数可以轻松的实现队列。

队列基本的方法有:

  • 判断是否为空(isEmpty),
  • 队列长度(size),
  • 入队列(push),
  • 出队列(pop),

代码举例:


<?php 

class Quene{
	private $data;

	public function __construct()
	{
		$this->data = [];
	}

	public function isEmpty()
	{
		return empty($this->data) ? true : false;
	}

	// 入队列
	public function push($item)
	{
		array_unshift($this->data,$item);
	}

	// 出队列
	public function pop()
	{
		array_pop($this->data);
	}

	// 队列长度
	public function size()
	{
		return count($this->data);
	}

	// 这个是便于测试写的方法
	public function read()
	{
		return $this->data;
	}
}

$q = new Quene();
print_r($q->read());echo '<br>';

$q->push('a');
print_r($q->read());echo '<br>';

$q->push('b');
print_r($q->read());echo '<br>';

$q->pop();
print_r($q->read());echo '<br>';

$q->pop();
print_r($q->read());echo '<br>';

结果如下:

Alt text

栈 Stack

栈也是比较常用的数据结构之一,其特点是后进先出(LIFO - last in first out)。

栈的基本的方法和队列类似:

  • 判断是否为空(isEmpty),
  • 栈长度(size),
  • 入栈(push),
  • 出栈(pop),

代码举例:


<?php 

class Stack{
	private $data;

	public function __construct()
	{
		$this->data = [];
	}

	public function isEmpty()
	{
		return empty($this->data) ? true : false;
	}

	// 入栈
	public function push($item)
	{
		array_unshift($this->data,$item);
	}

	// 出栈
	public function pop()
	{
		array_pop($this->data);
	}

	// 栈长度
	public function size()
	{
		return count($this->data);
	}

	// 这个是便于测试写的方法
	public function read()
	{
		return $this->data;
	}
}

$s = new Stack();
print_r($s->read());echo '<br>';

$s->push('a');
print_r($s->read());echo '<br>';

$s->push('b');
print_r($s->read());echo '<br>';

$s->pop();
print_r($s->read());echo '<br>';

$s->pop();
print_r($s->read());echo '<br>';

结果如下:

Alt text


Similar Posts

概要