<?phpclassQNode{public$data;public$next;publicfunction__construct($data){$this->data=$data;$this->next=null;}}classLinkQueue{//链队列包含头结点,实例化时,此队列为空private$data;private$next;private$front;//指向头结点private$rear;//指向尾结点//private$length;publicfunction__construct(){$this->data=null;$this->next=null;$this->front=$this;//指向头结点$this->rear=$this;//指向头结点//$this->length=0;}//销毁队列publicfunctionDestroyQueue(){while($this->front){//销毁首先是从头结点开始$this->rear=$this->front->next;unset($this->front);$this->front=$this->rear;}}//清空队列publicfunctionClearQueue(){$p=$this->front->next;while($p){$q=$p->next;unset($p);$p=$q;}$this->front->next=null;$this->rear=$this->front;}//队列是否为空publicfunctionQueueEmpty(){if($this->front==$this->rear){return'Null';}else{return'NoNull';}}//队列的长度publicfunctionQueueLength(){$p=$this->front;$i=0;while($p!=$this->rear){$i++;$p=$p->next;}return$i;//return$this->length;}//取得队头元素publicfunctionGetHead(){if($this->front==$this->rear){return'ERROR';}return$this->front->next->data;}//从队尾插入元素publicfunctionEnQueue(){$node=newQNode(mt_rand(100,200));$node->next=$this->rear->next;$this->rear->next=$node;$this->rear=$node;$this->length++;}//从队头删除元素publicfunctionDeQueue(){if($this->front==$this->rear){return'ERROR';}$p=$this->front->next;unset($this->front->next);$this->front->next=$p->next;if($this->rear==$p){//如果只有一个元素那么,为指针就需要变化了。$this->rear=$this->front;}$this->length--;return'OK';}//遍历队列元素publicfunctionQueueTraverse(){if($this->front==$this->rear){return'ERROR';}$arr=array();$p=$this->front->next;while($p){$arr[]=$p->data;$p=$p->next;}return$arr;}}