MST

星途 面试题库

面试题:C++ 中如何基于数组实现一个简单队列

请用C++ 编写代码,基于数组实现一个队列类。该队列需要包含入队(enqueue)、出队(dequeue)、获取队头元素(front)以及判断队列是否为空(isEmpty)的功能。注意处理队列满和队列空的情况。
47.6万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#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;
}