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

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

資料結構與演算法(PHP實現) - 隊列(Queue) 1
/**
* 資料結構與演算法(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
$queue = new Queue();
$queue->enqueue(1)->enqueue(2)->enqueue(3)->enqueue(4)->enqueue(5)->enqueue(6);
echo '

', print_r($queue->getQueue(), TRUE), '
';

$queue->dequeue();
echo '
', print_r($queue->getQueue(), TRUE), '
';
?>

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

http://www.bkjia.com/PHPjc/477263.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/477263.htmlTechArticle隊列(Queue),是一種特殊的先進先出線性表,其只能在前端進行刪除操作(一般稱為出隊),在後端進行插入操作(一般稱為入隊)。進...

  • 相關文章

    聯繫我們

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