阅读以下代码,下面哪一项是正确的?
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();
}
}排列组合问题:先判断是否考虑顺序(排列P vs 组合C),再确定是否允许重复。乘法原理分步,加法原理分类。
区分排列(考虑顺序,$P(n,m)$)和组合(不考虑顺序,$C(n,m)$)。注意特殊元素优先处理、正难则反等计数技巧。
本题考查 GESP 六级《数据结构》模块中栈与队列的核心区别。命题人故意把两者放在同一函数里,就是卡住那些只背了"栈是后进先出"却分不清"队列是先进先出"的概念混淆者。
循环把 1~5 同时塞进栈和队列,栈顶永远是最新压入的 5,队列头永远是最早压入的 1。所以先清空栈时,s.top() 依次弹出 5→4→3→2→1;再清空队列时,q.front() 依次弹出 1→2→3→4→5。