c++实现队列
#include <iostream>
using namespace std;
class Queue {
private:
int* arr;
int capacity;
int frontIndex;
int rearIndex;
int count;
public:
Queue(int size) {
arr = new int[size];
capacity = size;
frontIndex = 0;
rearIndex = -1;
count = 0;
}
~Queue() {
delete[] arr;
}
// 向队列尾部插入元素
void enqueue(int element) {
if (isFull()) {
cout << "队列已满,无法插入" << endl;
return;
}
rearIndex = (rearIndex + 1) % capacity;
arr[rearIndex] = element;
count++;
}
// 删除队列头部的元素
void dequeue() {
if (isEmpty()) {
cout << "队列为空,无法删除" << endl;
return;
}
frontIndex = (frontIndex + 1) % capacity;
count--;
}
// 返回队列头部元素
int front() {
if (isEmpty()) {
cout << "队列为空" << endl;
return -1;
}
return arr[frontIndex];
}
// 返回队列尾部元素
int back() {
if (isEmpty()) {
cout << "队列为空" << endl;
return -1;
}
return arr[rearIndex];
}
// 返回队列中元素的数量
int size() {
return count;
}
// 检查队列是否为空
bool isEmpty() {
return (count == 0);
}
// 检查队列是否已满
bool isFull() {
return (count == capacity);
}
// 输出队列中的元素
void display() {
if (isEmpty()) {
cout << "队列为空" << endl;
return;
}
cout << "队列元素:";
for (int i = 0; i < count; i++) {
cout << arr[(frontIndex + i) % capacity] << " ";
}
cout << endl;
}
};
int main() {
Queue q(5);
q.enqueue(10);
q.enqueue(20);
q.enqueue(30);
q.enqueue(40);
q.display();
q.dequeue();
q.display();
cout << "队列头部: " << q.front() << endl;
cout << "队列尾部: " << q.back() << endl;
q.enqueue(50);
q.display();
return 0;
}