出队第k个元素 编写程序,对于一个含n(n>1)个元素的queue<int>队列容器qu,出队从对头到队尾的第k(1=<k<=n)个元素,其他队列元素不变,执行效果图如下。思路同上
时间: 2024-04-30 18:25:05 浏览: 109
以下是一个实现出队第k个元素的程序:
```c++
#include <iostream>
#include <queue>
using namespace std;
void dequeueK(queue<int>& qu, int k) {
int n = qu.size();
if (k < 1 || k > n) {
cout << "Invalid k value!" << endl;
return;
}
for (int i = 1; i <= k - 1; i++) {
qu.push(qu.front());
qu.pop();
}
qu.pop();
}
int main() {
queue<int> qu;
qu.push(1);
qu.push(2);
qu.push(3);
qu.push(4);
int k = 3;
dequeueK(qu, k);
while (!qu.empty()) {
cout << qu.front() << " ";
qu.pop();
}
cout << endl;
return 0;
}
```
程序中的 `dequeueK` 函数实现了出队从对头到队尾的第k个元素的功能。首先,我们获取队列的大小 `n`,判断 `k` 是否在合法的范围内。接着,我们将队列中前 `k-1` 个元素依次弹出并重新入队,这样队列的对头就是第k个元素了。最后,我们再将队头元素弹出即可。
在主函数中,我们创建一个包含4个元素的队列,并执行出队第3个元素的操作。最后,我们遍历队列并输出所有剩余元素,结果为 `1 2 4`。
阅读全文