PHP實現隊列(Queue)資料結構

來源:互聯網
上載者:User

隊列(Queue),是一種特殊的先進先出線性表,其只能在前端進行刪除操作(一般稱為出隊),在後端進行插入操作(一般稱為入隊)。進行刪除操作的端稱為隊頭,進行插入操作的端稱為隊尾。隊列,是按照先進先出或後進後出的原則組織資料。當隊列中沒有元素時,稱為空白隊列。

資料結構與演算法(PHP實現) - 隊列(Queue)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 <?php/** * 資料結構與演算法(PHP實現) - 隊列(Queue)。 *
 * @author 創想編程(TOPPHP.ORG) * @copyright Copyright (c) 2013 創想編程(TOPPHP.ORG) All Rights Reserved * @license http://www.opensource.org/licenses/mit-license.php MIT LICENSE * @version 1.0.0 - Build20130607 */class
Queue {
  /**   * 隊列。   *
   * @var array   */  private
$queue;   /**   * 隊列的長度。   *
   * @var integer   */  private
$size;   /**   * 構造方法 - 初始化資料。   */  public
function __construct() {    $this->queue =
array();    $this->size = 0;  }   /**   * 入隊操作。   *
   * @param mixed $data 入隊資料。   * @return object 返回對象本身。   */  public
function enqueue($data) {    $this->queue[$this->size++] =
$data;     return
$this;  }   /**   * 出隊操作。   *
   * @return mixed 空隊列時返回FALSE,否則返回隊頭元素。   */  public
function dequeue() {    if
(!$this->isEmpty()) {      --$this->size;      $front
= array_splice($this->queue, 0, 1);       return
$front[0];    }     return
FALSE;  }   /**   * 擷取隊列。   *
   * @return array 返回整個隊列。   */  public
function getQueue() {    return
$this->queue;  }   /**   * 擷取隊頭元素。   *
   * @return mixed 空隊列時返回FALSE,否則返回隊頭元素。   */  public
function getFront() {    if
(!$this->isEmpty()) {      return
$this->queue[0];    }     return
FALSE;  }   /**   * 擷取隊列的長度。   *
   * @return integer 返回隊列的長度。   */  public
function getSize() {    return
$this->size;  }   /**   * 檢測隊列是否為空白。   *
   * @return boolean 空隊列則返回TRUE,否則返回FALSE。   */  public
function isEmpty() {    return
0 === $this->size;  }}?>
範例程式碼
12345678 <?php$queue
=
new Queue();$queue->enqueue(1)->enqueue(2)->enqueue(3)->enqueue(4)->enqueue(5)->enqueue(6);echo
'<pre>'
, print_r($queue->getQueue(), TRUE),
'</pre>'; $queue->dequeue();echo
'<pre>'
, print_r($queue->getQueue(), TRUE),
'</pre>';?>

說明:PHP數組函數已有類似隊列的功能函數存在:array_unshift(入隊)和、array_shift(出隊)。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.