标签:分享 get 版本号 线性 aik 成员 blog 使用 结构
队列
队列是一种特殊的线性表,特殊之处在于它仅仅同意在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队。从队列中删除一个队列元素成为出队。由于队列仅仅同意在一段插入。在还有一端删除,所以仅仅有最早进入队列的元素才干最先从队列中删除,故队列又称为先进先出(FIFO—first in first out)线性表。
在PHP中,队列经经常使用来做消息队列和任务队列等,是一个很实用的机构。小弟初学。这里简单的介绍下队列的基本结构和操作。
1.顺寻队列
PHP中的顺序队列很easy,简单的几行就行实现。
<?
php
class Queue{
private $Que=array();
//入队
public function Enqueue($data){
return array_push($this->Que,$data);
}
//出队
public function DelQue(){
return array_shift($this->Que);
}
}
>
这样就简单的实现了PHP版本号的顺序队列。
2.链式队列
链式队列属于经常使用队列,这里我简单的写了一下链式队列的构造方法和基本操作:
<?php
//定义链式队列的成员
class Qnode{
public $data;//成员数据
public $next;//指向下一成员
public $id;//成员id
public function __construct($data=NULL,$next=NULL,$id=0){
$this->data=$data;
$this->next=$next;
$this->id=$id;
}
}
//定义队列
class LinkQueue{
private $front;//队头
private $rear;//队尾
public function __construct(){
$this->front=new Qnode($data=NULL,$next=NULL,$id=0);
$this->rear=$this->front;
}
//定义入队
public function EnQueue($data){
$front=$this->front;
$q = new Qnode($data,NULL,$this->rear->id+1);
$this->rear->next=$q;
$this->rear=$q;
}
//出队
public function DelQueue(){
$temp=$this->front->next->data;
$this->front=$this->front->next;
$this->front->data=NULL;
return $temp;
}
//获取队列长度
public function GetLength(){
return ($this->rear->id-$this->front->id);
}
//获取队列
public function GetLinkQueue(){
$front=$this->front;
while($front != $this->rear){
$front=$front->next;
echo ‘第‘.$front->id.‘个成员为‘.$front->data.‘<br>‘;
}
}
}
$a =new LinkQueue;
$a->Enqueue(‘a‘);
$a->Enqueue(‘b‘);
$a->Enqueue(‘c‘);
$a->Enqueue(‘d‘);
$a->Enqueue(3);
echo ‘出队曾经总共同拥有‘.$a->GetLength().‘个队员<br>‘;
echo $a->DelQueue().‘运行出队以后<br>‘;
echo $a->GetLinkQueue();
echo ‘一共剩余‘.$a->GetLength().‘个队员‘;
?>
最后几行为測试代码。下面是结果:
希望能够帮助大家理解链表结构,小弟初学,要是有地方写的不够透彻,希望大家多多包括。
标签:分享 get 版本号 线性 aik 成员 blog 使用 结构
原文地址:http://www.cnblogs.com/ljbguanli/p/6984278.html