php队列Queue

队列,直接用php array 的函数也能行,可以利用 一下几个function:


reset 函数将内部指针指向数组中的第一个元素,并返回

array_shift — 将数组开头的单元移出数组
array_unshift — 在数组开头插入一个或多个单元
array_push — 将一个或多个单元压入数组的末尾(入栈)
current — 返回数组中的当前单元
each — 返回数组中当前的键/值对并将数组指针向前移动一步
end — 将数组的内部指针指向最后一个单元
pos — current 的别名
prev — 将数组的内部指针倒回一位

$a=array();
#入队列
array_push($a, 1);
array_push($a, 2);
array_push($a, 3);
#将数组内指针指向第一个,并输出
print_r(reset($a));
print_r($a);
#获取并移除队列首部一个单元
print_r(array_shift($a));
print_r($a);

链表实现:

<?php 


class Node{
	public $item;
	public $next;
}

class Queue{
	private $first;
	private $last;
	private $n;

	function isEmpty(){
		return $this->first==null;
	}	
	function size(){
		return $this->n;
	}

	function peek(){
		if($this->isEmpty())
			throw new Exception('no such elemane');
		return $this->first->item;
	}

	function enqueue($item){
		$oldlast=$this->last;
		$this->last=new Node();
		$this->last->item=$item;
		if($this->isEmpty())
			$this->first=$this->last;
		else
			$oldlast->next=$this->last;
		$this->n++;
	}

	function dequeue(){
		if($this->isEmpty())
			throw new Exception('not such elemane');
		$item=$this->first->item;
		$this->first=$this->first->next;
		$this->n--;
		if($this->isEmpty())
			$this->last=null;
		return $item;
	}
}

#测试
try {
	$queue=new Queue;
	print_r($queue);
	$queue->enqueue(1);
	$queue->enqueue(2);
	$queue->enqueue(3);
	print_r($queue->peek());
	print_r($queue);

	print_r($queue->dequeue());
	print_r($queue);

} catch (Exception $e) {
	echo $e->getMessage();
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值