编写程序,对于一个含n(n>1)个元素的queue<int>队列容器qu,出队从对头到队尾的第k(1=<k<=n)个元素,其他队列元素不变,执行效果图如下。思路同上。
时间: 2024-04-29 18:21:50 浏览: 106
下面是一个简单的C++程序实现:
```cpp
#include <iostream>
#include <queue>
using namespace std;
void dropKthElement(queue<int>& qu, int k) {
if (k < 1 || k > qu.size()) {
return;
}
queue<int> tempQu;
for (int i = 1; i <= k - 1; i++) {
tempQu.push(qu.front());
qu.pop();
}
qu.pop();
while (!tempQu.empty()) {
qu.push(tempQu.front());
tempQu.pop();
}
}
int main() {
queue<int> qu;
int n, k;
cout << "请输入队列元素个数n:";
cin >> n;
cout << "请输入要删除的元素位置k:";
cin >> k;
cout << "请输入队列元素:";
for (int i = 0; i < n; i++) {
int num;
cin >> num;
qu.push(num);
}
dropKthElement(qu, k);
cout << "删除第" << k << "个元素后的队列:";
while (!qu.empty()) {
cout << qu.front() << " ";
qu.pop();
}
cout << endl;
return 0;
}
```
程序首先定义了一个 `dropKthElement` 函数,该函数接收一个 `queue<int>&` 类型的引用和一个整数 `k`,表示删除队列中第 `k` 个元素。如果 `k` 的值不在有效范围内,则函数直接退出。然后,程序定义了一个 `tempQu` 队列,用于暂存队列中前 `k-1` 个元素。接着,程序利用循环从 `qu` 队列中取出前 `k-1` 个元素,并依次放入 `tempQu` 队列中,最后再从 `qu` 队列中弹出第 `k` 个元素。接着,程序再次利用循环将 `tempQu` 队列中的元素依次放回 `qu` 队列中。最后,程序在 `main` 函数中读入队列的元素个数 `n`、要删除的元素位置 `k` 和队列的元素,并调用 `dropKthElement` 函数删除第 `k` 个元素。最后,程序输出删除第 `k` 个元素后的队列元素。
阅读全文