PHP實現隊列及隊列原理

隊列是一種線性表,按照先進先出的原則進行的:

PHP實現隊列原理看看各語言實現隊列的方法:
各語言實現隊列的方法PHP實現隊列:第一個元素做爲隊頭,最後一個元素做爲隊尾
php

  1. <?php
  2. /**
  3. * 隊列就是這麼簡單
  4. *
  5. * @link http://www.phpddt.com
  6. */
  7. $array = array('PHP', 'JAVA');
  8.  
  9. array_push($array, 'PYTHON'); //入隊列
  10.  
  11. array_shift($array); //出隊列


什麼是雙端隊列(或雙向隊列)Deque,全名double-ended queue?
即元素能夠在隊列的任意一段入隊或出隊,若是咱們把這些方法叫作insertLeft()和insertRight(),以及removeLeft()和removeRight()。若是嚴格禁止調用insertLeft()和removeLeft()方法(或禁用右段的操做),雙端隊列功能就和棧同樣。禁止調用insertLeft()和removeRight()(或相反的另外一對方法),它的功能就和隊列同樣了。雙端隊列與棧或隊列相比,是一種多用途的數據結構。
PHP實現雙端隊列:html

  1. <?php
  2. class Deque
  3. {
  4. public $queue = array();
  5. /**(尾部)入隊 **/
  6. public function addLast($value)
  7. {
  8. return array_push($this->queue,$value);
  9. }
  10. /**(尾部)出隊**/
  11. public function removeLast()
  12. {
  13. return array_pop($this->queue);
  14. }
  15. /**(頭部)入隊**/
  16. public function addFirst($value)
  17. {
  18. return array_unshift($this->queue,$value);
  19. }
  20. /**(頭部)出隊**/
  21. public function removeFirst()
  22. {
  23. return array_shift($this->queue);
  24. }
  25. /**清空隊列**/
  26. public function makeEmpty()
  27. {
  28. unset($this->queue);
  29. }
  30. /**獲取列頭**/
  31. public function getFirst()
  32. {
  33. return reset($this->queue);
  34. }
  35.  
  36. /** 獲取列尾 **/
  37. public function getLast()
  38. {
  39. return end($this->queue);
  40. }
  41.  
  42. /** 獲取長度 **/
  43. public function getLength()
  44. {
  45. return count($this->queue);
  46. }
  47. }


隊列的用途:
隊列能夠很好地異步處理數據傳送和存儲,當你頻繁地向數據庫中插入數據、頻繁地向搜索引擎提交數據,就可採起隊列來異步插入。另外,還能夠將較慢的處理邏輯、有併發數量限制的處理邏輯,經過消息隊列放在後臺處理,例如FLV視頻轉換、發送手機短信、發送電子郵件等。數據庫

 

相關文章
相關標籤/搜索