GESP 六级 · GESP 202406 C++ 六级 第 7 题

选择题 · 答案 A · 考点:数据结构

← 整套速查表 GESP 六级 全部真题

题目

下面定义了一个循环队列的类,请补全判断队列是否满的函数,横向上应填写( )。

#include <iostream>

using namespace std;

class circular_queue {
private:
    int *arr; // 数组用于存储队列元素
    int capacity; // 队列容量
    int front; // 队头指针
    int rear; // 队尾指针

public:
    circular_queue(int size) {
        capacity = size + 1; // 为了避免队列满时与队列空时指针相等的情况,多预留一个空间
        arr = new int[capacity];
        front = 0;
        rear = 0;
    }

    ~circular_queue() {
        delete[] arr;
    }

    bool is_empty() {
        return front == rear;
    }

    bool is_full() {
        // 在此处填入代码
    }

    void en_queue(int data) {
        if (is_full()) {
            cout << "队列已满,无法入队!" << endl;
            return -1;
        }
        arr[rear] = data;
        rear = (rear + 1) % capacity;
        return 1;
    }

    int de_queue() {
        if (is_empty()) {
            cout << "队列为空,无法出队!" << endl;
            return -1; // 出队失败,返回一个特殊值
        }
        int data = arr[front];
        front = (front + 1) % capacity;
        return data;
    }
};
答案:A

考点

数据结构

解题思维

仔细审题,明确已知条件和所求目标,运用相关知识点逐项分析。

常见错误

审题时注意题目要求(选正确还是选错误),避免因审题不清失分。涉及代码的题目要逐行分析变量变化。

详细解析(节选)

【考点】数据结构|循环队列指针关系|取模判断

1. 🎯 考纲定位

本题考查数据结构模块中的循环队列指针关系,GESP六级核心考点。命题人放这道题,就是要卡住考生对"容量预留"和"取模判断"的理解。很多人只背"队列满时rear==front"的结论,却忘了这里capacity=size+1,导致选项C直接判空,选项D忽略了取模,选项B更是把rear写成了rear%capacity(多此一举)。这道题的本质不是考队列操作,而是考边界条件判断。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断