代码 :
<?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);
?>