代码 :
<?php //basic queue. class Queue { public $queue_len; public $queue = array (); function __construct($queue_len = 2) { $this->queue_len = $queue_len; } function QueueEmpty() { return count ( $this->queue ) < 1 ? true : false; } function QueueFull() { return (count ( $this->queue ) == $this->queue_len) ? true : false; } function EnQueue($elm) { if (! $this->QueueFull ()) { array_unshift ( $this->queue, $elm ); } } function DeQueue() { if (! $this->QueueEmpty ()) { return array_pop ( $this->queue ); } return null; } function QueueFront() { return end ( $this->queue ); } } //double quere class Dequeue { public $queue_len; public $queue = array (); public $direction = 1; //正向1,反向2 function __construct($queue_len = 2) { $this->queue_len = $queue_len; } function QueueEmpty() { return count ( $this->queue ) < 1 ? true : false; } function QueueFull() { return (count ( $this->queue ) == $this->queue_len) ? true : false; } function EnQueue($elm) { if (! $this->QueueFull ()) { switch ($this->direction) { case 1 : { array_unshift ( $this->queue, $elm ); break; } case 2 : { $this->queue [] = $elm; break; } } } } function DeQueue() { if (! $this->QueueEmpty ()) { switch ($this->direction) { case 1 : { return array_pop ( $this->queue ); break; } case 2 : { return array_shift ( $this->queue ); break; } } } return null; } function QueueFront() { switch ($this->direction) { case 1 : { return end ( $this->queue ); break; } case 2 : { return reset( $this->queue ); break; } } } function setdirection($direction = 1) { $this->direction = $direction; } } ?>
调用:
<?php require_once './queue.php'; $queue = new Dequeue(3); echo ">> 正向入队数字1,2,3.../n"; for($i=1;$i<4;$i++){ $queue->EnQueue($i); } echo ">> 队列为 /n"; print_r($queue->queue); echo ">> 首元素出队列 /n"; echo $queue->DeQueue(); echo ">> 队列为 /n"; print_r($queue->queue); echo "<br />"; echo ">> 反向入队数字1,2,3.../n"; $rq=new Dequeue(3); $rq->setdirection(2); for($i=1;$i<4;$i++){ $rq->EnQueue($i); } echo ">> 队列为 /n"; print_r($rq->queue); echo ">> 首元素出队列 /n"; echo $rq->DeQueue(); echo ">> 队列为 /n"; print_r($rq->queue); ?>
