已知q是一个非空队列,s是一个空栈。仅用栈和队列的adt函数和一个变量x编写一个算法,使得q中的元素位置倒置。(要求:采用c或c++语言描述算法)
时间: 2023-04-18 18:02:46 浏览: 294
已知Q是一个非空队列,S是一个空栈。仅用队列和栈的ADT函数和少量工作变量,编写一个算法,将队列Q中的所有元素逆置
5星 · 资源好评率100%
算法描述:
1. 将队列q中的元素依次入栈s,直到队列q为空。
2. 将栈s中的元素依次出栈并入队列q,直到栈s为空。
3. 重复执行步骤1和步骤2,直到队列q中的元素位置全部倒置。
C++代码实现:
void reverseQueue(queue<int>& q) {
stack<int> s;
int x;
while (!q.empty()) {
x = q.front();
q.pop();
s.push(x);
}
while (!s.empty()) {
x = s.top();
s.pop();
q.push(x);
}
}
阅读全文