PHP隊列演算法如何??

來源:互聯網
上載者:User
PHP實現隊列的方法是什嗎?隊列是一種線性表,是按照先進先出的原則進行的,下面我們來看一下本篇文章給大家介紹的一種PHP隊列演算法的實現。

此隊列演算法中有兩個類一個是data類,這個類是存放資料;第二個是queue也就是隊列類這個就是隊列的一些操作。

首先隊列裡包含front(隊列的頭,也就是出隊是要出去的) rear(隊列的尾部在這裡永遠指向0) queue(存放所有入隊的data對像,queue中預設存在一個元素當空時front和rear都指向他) maxsize(隊列的長度)四個屬性

應用說明:

1初始化隊列:產生一個隊列傳入一個參數作為maxsize初始化隊列把rear設為0 ,front設為0此時queue中只有0號元素rear和front都指向他

2.入隊:判斷隊列是否已滿(front-rear==maxsize),如果滿提示,若果沒滿先讓front+1,然後讓所有隊列中的元素像前移動一位(也就是給新來的讓出隊尾位置),然後產生data對象插入到隊尾+1的位置。此時入隊成功!

3.出隊:判斷隊列是否為空白(front==rear),如空提示,如不為空白,刪除front指向的對象,front-1(向後移動一位),出隊成功!

<?php/***  php隊列演算法*  *  Create On 2010-6-4*  Author Been*  QQ:281443751*  Email:binbin1129@126.com**/class data {    //資料    private $data;        public function __construct($data){            $this->data=$data;            echo $data.":哥進隊了!<br>";    }        public function getData(){            return $this->data;    }    public function __destruct(){            echo $this->data.":哥走了!<br>";    }}class queue{    protected $front;//隊頭    protected $rear;//隊尾    protected $queue=array('0'=>'隊尾');//儲存隊列    protected $maxsize;//最大數        public function __construct($size){            $this->initQ($size);    }    //初始化隊列    private function initQ($size){            $this->front=0;            $this->rear=0;            $this->maxsize=$size;    }    //判斷隊空    public function QIsEmpty(){            return $this->front==$this->rear;    }    //判斷隊滿    public function QIsFull(){            return ($this->front-$this->rear)==$this->maxsize;    }    //擷取隊首資料    public function getFrontDate(){            return $this->queue[$this->front]->getData();    }    //入隊    public function InQ($data){            if($this->QIsFull())echo $data.":我一來咋就滿了!(隊滿不能入隊,請等待!)<br>";            else {                $this->front++;                for($i=$this->front;$i>$this->rear;$i--){                    //echo $data;                if($this->queue[$i])unset($this->queue[$i]);                                $this->queue[$i]=$this->queue[$i-1];            }                        $this->queue[$this->rear+1]=new data($data);                        //print_r($this->queue);            //echo $this->front;            echo '入隊成功!<br>';        }    }    //出隊    public function OutQ(){            if($this->QIsEmpty())echo "隊空不能出隊!<br>";            else{                unset($this->queue[$this->front]);                $this->front--;                //print_r($this->queue);            //echo $this->front;            echo "出隊成功!<br>";        }    }}$q=new queue(3);$q->InQ("A");$q->InQ('B');$q->InQ('遊泳');$q->InQ('C');$q->OutQ();$q->InQ("D");$q->OutQ();$q->OutQ();$q->OutQ();$q->OutQ();
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.