Home  >  Article  >  Backend Development  >  PHP双向队列,双端队列代码

PHP双向队列,双端队列代码

WBOY
WBOYOriginal
2016-07-25 08:42:171095browse
  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


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn