public $queue = [];
public $size;
public $front = 0; # 队首指针
public $rear = 0; # 队尾指针
public function __construct($size = 10)
{
$this->size = $size;
for ($i = 0; $i < $this->size; $i++) {
$this->queue[] = '';
}
}
# 入列
public function push($element)
{
if (!$this->is_filled()) {
$this->rear = ($this->rear + 1) % $this->size;
$this->queue[$this->rear] = $element;
} else {
throw new Exception("队列已满");
}
}
# 出列
public function pop()
{
if (!$this->is_empty()) {
$this->front = ($this->front + 1) % $this->size;
$element = $this->queue[$this->front];
$this->queue[$this->front] = '';
return $element;
} else {
throw new Exception("队列为空");
}
}
# 判断队列是否为空
public function is_empty()
{
return $this->rear == $this->front;
}
# 判断队列是否满的
public function is_filled()
{
return ($this->rear + 1) % $this->size == $this->front;
}
public function get_queue()
{
return $this->queue;
}
}
//声明栈
$queue = new queue(6);
$queue->push(5);
$queue->push(6);
$queue->push(7);
$queue->push(8);
$queue->push(9);
$queue->pop();
$queue->pop();
$queue->pop();
$queue->push(10);
$queue->push(11);
$queue->push(12);
print_r($queue->get_queue());