// Define a Queue class
class Queue {
private $queue; // Array to store queue elements
private $size; // Maximum size of the queue
private $first; // Index of the first element
private $last; // Index of the last element
// Constructor to initialize the queue
public function __construct($size = 10) {
$this->queue = [];
$this->size = $size;
$this->first = 0;
$this->last = -1;
}
// Enqueue: Add an element to the last of the queue
public function enqueue($element) {
if ($this->isFull()) {
echo "Queue is full. Cannot enqueue $element.\n";
return false;
}
$this->last++;
$this->queue[$this->last] = $element;
echo "Enqueued: $element\n";
return true;
}
// Dequeue: Remove an element from the first of the queue
public function dequeue() {
if ($this->isEmpty()) {
echo "Queue is empty. Cannot dequeue.\n";
return null;
}
$element = $this->queue[$this->first];
unset($this->queue[$this->first]); // Remove the element
$this->first++;
echo "Dequeued: $element\n";
return $element;
}
// Check if the queue is empty
public function isEmpty() {
return $this->first > $this->last;
}
// Check if the queue is full
public function isFull() {
return $this->last - $this->first + 1 >= $this->size;
}
// Display the queue
public function display() {
if ($this->isEmpty()) {
echo "Queue is empty.\n";
return;
}
echo "Queue elements: ";
for ($i = $this->first; $i <= $this->last; $i++) {
echo $this->queue[$i] . " ";
}
echo "\n";
}
}
$queue = new Queue(5); // Create a queue with a maximum size of 5
$queue->enqueue(10);
$queue->enqueue(20);
$queue->enqueue(30);
$queue->display();
$queue->dequeue();
$queue->display();
$queue->enqueue(40);
$queue->enqueue(50);
$queue->enqueue(60);
$queue->enqueue(70);
$queue->display();
/*
run:
Enqueued: 10
Enqueued: 20
Enqueued: 30
Queue elements: 10 20 30
Dequeued: 10
Queue elements: 20 30
Enqueued: 40
Enqueued: 50
Enqueued: 60
Queue is full. Cannot enqueue 70.
Queue elements: 20 30 40 50 60
*/