热门IT资讯网

数据结构之队列——链式存储结构(php代码实现)

发表于:2024-11-24 作者:热门IT资讯网编辑
编辑最后更新 2024年11月24日,
data=$data;        $this->next=null;    }}class LinkQueue{ //链队列包含头结点,实例化时,此队列为空    private $data;    private $next;    private $front;//指向头结点    private $rear;//指向尾结点//    private $length;    public function __construct(){        $this->data=null;        $this->next=null;        $this->front=$this; //指向头结点        $this->rear=$this;//指向头结点//        $this->length=0;    }    //销毁队列    public function DestroyQueue(){        while($this->front){ //销毁首先是从头结点开始            $this->rear=$this->front->next;            unset($this->front);            $this->front=$this->rear;        }    }    //清空队列    public function ClearQueue(){        $p=$this->front->next;        while($p){            $q=$p->next;            unset($p);            $p=$q;        }        $this->front->next=null;        $this->rear=$this->front;    }    //队列是否为空    public function QueueEmpty(){        if($this->front==$this->rear){            return 'Null';        }else{            return 'No Null';        }    }    //队列的长度    public function QueueLength(){        $p=$this->front;        $i=0;        while($p != $this->rear){            $i++;            $p=$p->next;        }        return $i;//        return $this->length;    }    //取得队头元素    public function GetHead(){        if($this->front==$this->rear){            return 'ERROR';        }        return $this->front->next->data;    }    //从队尾插入元素    public function EnQueue(){        $node=new QNode(mt_rand(100,200));        $node->next=$this->rear->next;        $this->rear->next=$node;        $this->rear=$node;        $this->length++;    }    //从队头删除元素    public function DeQueue(){        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';    }    //遍历队列元素    public function QueueTraverse(){        if($this->front==$this->rear){            return 'ERROR';        }        $arr=array();        $p=$this->front->next;        while($p){            $arr[]=$p->data;            $p=$p->next;        }        return $arr;    }}


0