PHP 双方向キュー、両端キュー コード

WBOY
リリース: 2016-07-25 08:42:17
オリジナル
1253 人が閲覧しました
  1. /**
  2. * ユーザー: jifei
  3. * 日付: 2013-07-30
  4. * 時間: 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 functionfront()
  28. {
  29. return reverse($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


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート