GESP 六级 · GESP 202412 C++ 六级 第 4 题

选择题 · 答案 B

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

题目

阅读以下代码,下面哪一项是正确的?

void processData() {
    stack<int> s;
    queue<int> q;
    for (int i = 1; i <= 5; ++i) {
        s.push(i);
        q.push(i);
    }

    while (!s.empty()) {
        cout << "Stack pop: " << s.top() << endl;
        s.pop();
    }

    while (!q.empty()) {
        cout << "Queue pop: " << q.front() << endl;
        q.pop();
    }
}
答案:B

解题思维

排列组合问题:先判断是否考虑顺序(排列P vs 组合C),再确定是否允许重复。乘法原理分步,加法原理分类。

常见错误

区分排列(考虑顺序,$P(n,m)$)和组合(不考虑顺序,$C(n,m)$)。注意特殊元素优先处理、正难则反等计数技巧。

详细解析(节选)

1. 🎯 考纲定位

本题考查 GESP 六级《数据结构》模块中栈与队列的核心区别。命题人故意把两者放在同一函数里,就是卡住那些只背了"栈是后进先出"却分不清"队列是先进先出"的概念混淆者。

2. 🧠 解题思维

循环把 1~5 同时塞进栈和队列,栈顶永远是最新压入的 5,队列头永远是最早压入的 1。所以先清空栈时,s.top() 依次弹出 5→4→3→2→1;再清空队列时,q.front() 依次弹出 1→2→3→4→5。

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