PHP数据结构之七_队列的链式存储和队列的基本操作
2016-08-08 15:58
686 查看
PHP数据结构之七 队列的链式存储和队列的基本操作
队列
1.定义:队列(Queue):也是运算受限的线性表。是一种先进先出(First In First Out ,简称FIFO)的线性表。只允许在表的一端进行插入,而在另一端进行删除。
2.队首(front) :允许进行删除的一端称为队首。
3.队尾(rear) :允许进行插入的一端称为队尾。
4.队列的顺序存储表示
5.队列的链式存储表示
队列的链式存储结构简称为链队列,它是限制仅在表头进行删除操作和表尾进行插入操作的单链表。
队列的链式存储和队列的基本操作
<?php
/**
*队列的链式存储和队列的基本操作
*1.初始化队列
*2.链队列的入队操作
*3.链队列的出队操作
*4.仅返回队列中的全部元素
*5.返回队列元素个数
*6.判断队列是否为空
*7.将所有元素出队列
*
*@author xudianyang<>
*@version $Id:QueueLinked.class.php,v 1.0 2011/02/12 13:05:00 uw Exp
*@copyright ©2011,xudianyang
**/
header("content-type:text/html;charset=gb2312");
class QLNode{
public $mElem=null;
public $mNext=null;
}
class QueueLinked{
//队列“队首指针”
public $mFront=null;
//队列“队尾指针”
public $mRear=null;
//队列长度
public static $mLength=0;
public $mNext=null;
/**
*初始化队列
*
*@return void
*/
public function __construct(){
$this->mFront=$this;
$this->mRear=$this;
self::$mLength=0;
$this->mNext=null;
}
/**
*链队列的入队操作
*
*@param mixed $e 入队新元素值
*@return void
*/
public function getInsertElem($e){
$newLn=new QLNode();
$newLn->mElem=$e;
$newLn->mNext=null;
$this->mRear->mNext=$newLn;
$this->mRear=$newLn;
self::$mLength++;
}
/**
*链队列的出队操作
*
*@param mixed $e 出队的元素的值保存在此变量中
*@return boolean 成功返回true,否则返回false
*/
public function getDeleteElem(&$e){
if($this->mFront == $this->mRear){
return false;
}
$p=$this->mFront->mNext;
$e=$p->mElem;
$this->mFront->mNext=$p->mNext;
if($p==$this->mRear){
$this->mRear=$this->mFront;
}
self::$mLength--;
return true;
}
/**
*仅返回队列中的全部元素
*
*@return array 队列全部元素所组成的一个数组
*/
public function getAllElem(){
$qldata=array();
if($this->mFront==$this->mRear){
return $qldata;
}
$p=$this->mFront->mNext;
while($p!=null){
$qldata[]=$p->mElem;
$p=$p->mNext;
}
return $qldata;
}
/**
*返回队列元素个数
*
*@return int
*/
public function getLength(){
return self::$mLength;
}
/**
*判断队列是否为空
*
*@return boolean 为空返回true,否则返回false
*/
public function getIsEmpty(){
if($this->mFront == $this->mRear){
return true;
}else{
return false;
}
}
/**
*将所有元素出队列
*
*@return array 所有出队列的元素所组成的一个数组
*/
public function getDeleteAllElem(){
$qldata=array();
if($this->mFront == $this->mRear){
return $qldata;
}
while($this->mFront->mNext!=null){
$qldata[]=$this->mFront->mNext->mElem;
$this->mFront->mNext=$this->mFront->mNext->mNext;
self::$mLength--;
}
$this->mFront->mNext=null;
$this->mRear=$this->mFront;
return $qldata;
}
}
?>
队列
1.定义:队列(Queue):也是运算受限的线性表。是一种先进先出(First In First Out ,简称FIFO)的线性表。只允许在表的一端进行插入,而在另一端进行删除。
2.队首(front) :允许进行删除的一端称为队首。
3.队尾(rear) :允许进行插入的一端称为队尾。
4.队列的顺序存储表示
5.队列的链式存储表示
队列的链式存储结构简称为链队列,它是限制仅在表头进行删除操作和表尾进行插入操作的单链表。
队列的链式存储和队列的基本操作
<?php
/**
*队列的链式存储和队列的基本操作
*1.初始化队列
*2.链队列的入队操作
*3.链队列的出队操作
*4.仅返回队列中的全部元素
*5.返回队列元素个数
*6.判断队列是否为空
*7.将所有元素出队列
*
*@author xudianyang<>
*@version $Id:QueueLinked.class.php,v 1.0 2011/02/12 13:05:00 uw Exp
*@copyright ©2011,xudianyang
**/
header("content-type:text/html;charset=gb2312");
class QLNode{
public $mElem=null;
public $mNext=null;
}
class QueueLinked{
//队列“队首指针”
public $mFront=null;
//队列“队尾指针”
public $mRear=null;
//队列长度
public static $mLength=0;
public $mNext=null;
/**
*初始化队列
*
*@return void
*/
public function __construct(){
$this->mFront=$this;
$this->mRear=$this;
self::$mLength=0;
$this->mNext=null;
}
/**
*链队列的入队操作
*
*@param mixed $e 入队新元素值
*@return void
*/
public function getInsertElem($e){
$newLn=new QLNode();
$newLn->mElem=$e;
$newLn->mNext=null;
$this->mRear->mNext=$newLn;
$this->mRear=$newLn;
self::$mLength++;
}
/**
*链队列的出队操作
*
*@param mixed $e 出队的元素的值保存在此变量中
*@return boolean 成功返回true,否则返回false
*/
public function getDeleteElem(&$e){
if($this->mFront == $this->mRear){
return false;
}
$p=$this->mFront->mNext;
$e=$p->mElem;
$this->mFront->mNext=$p->mNext;
if($p==$this->mRear){
$this->mRear=$this->mFront;
}
self::$mLength--;
return true;
}
/**
*仅返回队列中的全部元素
*
*@return array 队列全部元素所组成的一个数组
*/
public function getAllElem(){
$qldata=array();
if($this->mFront==$this->mRear){
return $qldata;
}
$p=$this->mFront->mNext;
while($p!=null){
$qldata[]=$p->mElem;
$p=$p->mNext;
}
return $qldata;
}
/**
*返回队列元素个数
*
*@return int
*/
public function getLength(){
return self::$mLength;
}
/**
*判断队列是否为空
*
*@return boolean 为空返回true,否则返回false
*/
public function getIsEmpty(){
if($this->mFront == $this->mRear){
return true;
}else{
return false;
}
}
/**
*将所有元素出队列
*
*@return array 所有出队列的元素所组成的一个数组
*/
public function getDeleteAllElem(){
$qldata=array();
if($this->mFront == $this->mRear){
return $qldata;
}
while($this->mFront->mNext!=null){
$qldata[]=$this->mFront->mNext->mElem;
$this->mFront->mNext=$this->mFront->mNext->mNext;
self::$mLength--;
}
$this->mFront->mNext=null;
$this->mRear=$this->mFront;
return $qldata;
}
}
?>
相关文章推荐
- 数据结构_线性表_链式存储_单链表 的基本操作
- 数据结构_线性表_链式存储_单向循环链表的基本操作
- 数据结构_线性表_链式存储_双向循环链表的基本操作
- 数据结构-队列的链式存储实现操作
- 【数据结构】链式队列的基本操作
- 重学数据结构003——栈的基本操作及实现(链式存储)
- 数据结构-链式队列的基本操作
- 数据结构 串(链式存储)的基本操作
- [数据结构]程杰队列的链式存储结构及实现代码
- 栈的链式存储 c实现的几种基本操作
- 队列的链式存储及其基本运算
- 数据结构--链队列的基本操作
- 【数据结构与算法】基本数据结构——队列的链式表示
- 数据结构:字符串的堆分配存储结构,基本操作实现和测试。
- 数据结构 队列的基本操作
- 队列的顺序存储及其基本操作
- 采用链式存储实现队列的初始化、入队、出队操作。
- 数据结构 链队列基本操作
- 队列的链式存储及其基本运算
- 队列的链式存储结构与操作