程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP實現隊列(Queue)數據結構

PHP實現隊列(Queue)數據結構

編輯:關於PHP編程

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

數據結構與算法(PHP實現) - 隊列(Queue) 1
  <?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;
  }
}
?>

示例代碼 1
  <?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(出隊)。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved