C++ 编写程序,对一个含有n个元素的队列,出队从队头到队尾的第k个元素(1 ≤k≤n),其他队列元素不变。 提示:利用临时队列 tmpque,保存 k-1 个元素,出队第 k 个元素后,将剩 余元素复制至 tmpque
时间: 2024-05-16 11:13:48 浏览: 125
用c++写的队列程序
下面是一个 C++ 实现的示例代码:
```cpp
#include <iostream>
#include <queue>
using namespace std;
void dequeueKthElement(queue<int>& q, int k) {
if (k < 1 || k > q.size()) {
return;
}
queue<int> tmpque;
for (int i = 1; i < k; i++) {
tmpque.push(q.front());
q.pop();
}
q.pop();
while (!q.empty()) {
tmpque.push(q.front());
q.pop();
}
while (!tmpque.empty()) {
q.push(tmpque.front());
tmpque.pop();
}
}
int main() {
queue<int> q;
int n, k;
cin >> n >> k;
for (int i = 1; i <= n; i++) {
q.push(i);
}
dequeueKthElement(q, k);
while (!q.empty()) {
cout << q.front() << " ";
q.pop();
}
cout << endl;
return 0;
}
```
这里使用了 STL 中的 `queue`,首先将 1~n 的元素入队,然后用一个临时队列 `tmpque` 存储队列中前 k-1 个元素,然后将队头元素出队,接着将剩余的元素全部移到 `tmpque` 中,最后再将 `tmpque` 中的元素全部移回原队列中即可。注意,如果 k 不合法,则不进行任何操作。
阅读全文