写出一个循环队列的结构体,该队列元素最多是m个。
时间: 2024-02-13 10:05:03 浏览: 61
循环队列是一种特殊的队列,它可以避免数组的元素搬移操作,实现了循环使用数组空间的目的。下面是一个循环队列的结构体定义:
```c++
struct CircularQueue {
int* data;
int head;
int tail;
int capacity;
CircularQueue(int m) {
data = new int[m];
head = tail = 0;
capacity = m;
}
~CircularQueue() {
delete[] data;
}
};
```
其中,data是一个动态分配的数组,head和tail分别表示队列头和队列尾的下标,capacity表示队列的容量。
循环队列的判空和判满操作比较特殊,需要使用取模运算,具体实现如下:
```c++
bool isEmpty() {
return head == tail;
}
bool isFull() {
return (tail + 1) % capacity == head;
}
```
在循环队列中,队列为空的条件是head等于tail,队列为满的条件是(tail + 1) % capacity等于head。循环队列的插入和删除操作也需要使用取模运算,具体实现如下:
```c++
bool enQueue(int value) {
if (isFull()) return false;
data[tail] = value;
tail = (tail + 1) % capacity;
return true;
}
bool deQueue() {
if (isEmpty()) return false;
head = (head + 1) % capacity;
return true;
}
```
在循环队列中,入队操作将元素插入到队列尾部,然后将tail加1并取模,出队操作将head加1并取模。这样就可以实现循环队列的基本操作了。
阅读全文