跳至正文

PHP实现队列之双向队列

  • PHP

双向队列:既能头部入也能尾部入,既能头部出也能尾部出

<?php

class Queue {

	private $array    = array(); //声明空数组
	private $max_num  = 2; //最大入队个数


	//头入列
	public function setFirst($item){
		if($this->queueConut() < $this->max_num){
			return array_unshift($this->array,$item);
		}
		echo '队列已经满了';
	}

	//头出列
	public function getFirst(){
		if($this->queueConut() > 0){
			return array_shift($this->array);
		}
		echo '队列里没有数据了';
	}

	 
	//尾入列
	public function setLast($item){
		if($this->queueConut() < $this->max_num){
			return array_push($this->array,$item);
		}
		echo '队列已经满了';
	}

	 
	//尾出列
	public function getLast(){
		if($this->queueConut() > 0){
			return array_pop($this->array);
		}
		echo '队列里没有数据了';
		
	}

	//查看队列
	public function shows(){
		print_r($this->array);
	}

	//清空队列
	public function emptys(){
		if($this->queueConut() > 0){
			unset($this->array);
		}
		echo '队列里没有数据了';
	}

	//获取队列条数
	private function queueConut(){
		return count($this->array);
	}


}
$Queue = new Queue();

$Queue->setFirst('张三');
$Queue->shows();
$Queue->setFirst('李四');
$Queue->shows();
$Queue->setFirst('王二');
$Queue->shows();
$Queue->getLast();
$Queue->shows();

最终实现效果

Array
(
    [0] => 张三
)
Array
(
    [0] => 李四
    [1] => 张三
)
队列已经满了
Array
(
    [0] => 李四
    [1] => 张三
)
Array
(
    [0] => 李四
)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注