PHP雙向隊列,雙端隊列代碼

來源:互聯網
上載者:User
  1. /**
  2. * User: jifei
  3. * Date: 2013-07-30
  4. * Time: 23:12
  5. */
  6. /**
  7. * PHP實現雙向隊列,雙端隊列
  8. * 雙端隊列(deque,全名double-ended queue)是一種具有隊列和棧性質的資料結構。
  9. * 雙端隊列中的元素可以從兩端彈出,插入和刪除操作限定在隊列的兩邊進行。
  10. */
  11. class Deque
  12. {
  13. public $queue=array();
  14. /**
  15. * 建構函式初始化隊列
  16. */
  17. public function __construct($queue=array())
  18. {
  19. if(is_array($queue))
  20. {
  21. $this->queue=$queue;
  22. }
  23. }
  24. /**
  25. * 擷取第一個元素
  26. */
  27. public function front()
  28. {
  29. return reset($this->queue);
  30. }
  31. /**
  32. * 擷取最後一個元素
  33. */
  34. public function back()
  35. {
  36. return end($this->queue);
  37. }
  38. /**
  39. * 判斷是否為空白
  40. */
  41. public function is_empty()
  42. {
  43. return empty($this->queue);
  44. }
  45. /**
  46. * 隊列大小
  47. */
  48. public function size()
  49. {
  50. return count($this->queue);
  51. }
  52. /**
  53. * 插入到尾
  54. */
  55. public function push_back($val)
  56. {
  57. array_push($this->queue,$val);
  58. }
  59. /**
  60. * 插入到頭
  61. */
  62. public function push_front($val)
  63. {
  64. array_unshift($this->queue,$val);
  65. }
  66. /**
  67. * 移除最後一個元素
  68. */
  69. public function pop_back()
  70. {
  71. return array_pop($this->queue);
  72. }
  73. /**
  74. * 移除第一個元素
  75. */
  76. public function pop_front()
  77. {
  78. return array_shift($this->queue);
  79. }
  80. /**
  81. * 清空隊列
  82. */
  83. public function clear()
  84. {
  85. $this->queue=array();
  86. }
  87. }
  88. //初始化一個雙向隊列
  89. $deque=new Deque(array(1,2,3,4,5));
  90. echo $deque->size().PHP_EOL;
  91. echo $deque->is_empty().PHP_EOL;
  92. echo $deque->front().PHP_EOL;
  93. echo $deque->back().PHP_EOL;
  94. echo PHP_EOL;
  95. //彈出元素測試
  96. echo $deque->pop_back().PHP_EOL;
  97. echo $deque->pop_front().PHP_EOL;
  98. echo $deque->size().PHP_EOL;
  99. echo PHP_EOL;
  100. $deque->push_back('a').PHP_EOL;
  101. $deque->push_front(0).PHP_EOL;
  102. echo PHP_EOL;
  103. //插入測試
  104. echo $deque->front().PHP_EOL;
  105. echo $deque->back().PHP_EOL;
  106. echo $deque->size().PHP_EOL;
  107. echo PHP_EOL;
  108. //清空測試
  109. $deque->clear();
  110. echo $deque->is_empty();
複製代碼
PHP
  • 聯繫我們

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