| 本文介紹下,在php中實現隊列queue資料結構的一例代碼,是學習隊列操作的不錯的例子,有需要的朋友參考下吧。 什麼是隊列?隊列(Queue),是一種特殊的先進先出線性表,其只能在前端進行刪除操作(一般稱為出隊),在後端進行插入操作(一般稱為入隊)。進行刪除操作的端稱為隊頭,進行插入操作的端稱為隊尾。隊列,是按照先進先出或後進後出的原則組織資料。當隊列中沒有元素時,稱為空白隊列。 下面分享下,php實現的資料結構與演算法- 隊列(Queue)的代碼。 如下: 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; }}?>調用樣本: 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(出隊)。 |