面试题答案
一键面试#include <iostream>
class Queue {
private:
int *arr;
int frontIndex;
int rearIndex;
int capacity;
public:
Queue(int size) : capacity(size), frontIndex(0), rearIndex(0) {
arr = new int[capacity];
}
~Queue() {
delete[] arr;
}
void enqueue(int value) {
if ((rearIndex + 1) % capacity == frontIndex) {
std::cout << "Queue is full. Cannot enqueue." << std::endl;
return;
}
arr[rearIndex] = value;
rearIndex = (rearIndex + 1) % capacity;
}
void dequeue() {
if (isEmpty()) {
std::cout << "Queue is empty. Cannot dequeue." << std::endl;
return;
}
frontIndex = (frontIndex + 1) % capacity;
}
int front() {
if (isEmpty()) {
std::cout << "Queue is empty. No front element." << std::endl;
return -1; // 返回一个特殊值表示错误
}
return arr[frontIndex];
}
bool isEmpty() {
return frontIndex == rearIndex;
}
};
你可以通过以下方式测试这个队列类:
int main() {
Queue q(3);
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
q.enqueue(4);
std::cout << "Front element: " << q.front() << std::endl;
q.dequeue();
std::cout << "Front element after dequeue: " << q.front() << std::endl;
std::cout << "Is queue empty? " << (q.isEmpty()? "Yes" : "No") << std::endl;
return 0;
}