返回首页 C++ 模板

循环队列模板

数组模拟队列,取模实现循环——避免频繁移动元素

循环队列 数组模拟 取模 GESP6
#include <bits/stdc++.h>
using namespace std;

const int N = 100010;

struct CircQueue {
    int data[N];
    int front, rear;
    CircQueue() : front(0), rear(0) {}

    bool empty() { return front == rear; }
    bool full()  { return (rear + 1) % N == front; }

    void push(int x) {
        if (full()) return;  // 队满
        data[rear] = x;
        rear = (rear + 1) % N;
    }

    void pop() {
        if (!empty()) front = (front + 1) % N;
    }

    int top() { return data[front]; }
    int size(){ return (rear - front + N) % N; }
};

int main() {
    CircQueue q;
    for (int i = 1; i <= 5; i++) q.push(i);
    while (!q.empty()) {
        cout << q.top() << " ";
        q.pop();
    }
    // 输出: 1 2 3 4 5
    return 0;
}

📖 要点说明

⚠️ 常见错误