算法设计与分析 李春葆 1_5_3 出队第k个元素
算法设计与分析 李春葆 1_5_3 出队第k个元素题目要求题目分析代码实现(C++)题目要求编写一个实验程序,对于一个含n(n>1)个元素的queue队列容器qu,出队从队头到队尾的第k(1<=k<=n)个元素,其他队列元素不变。题目分析1.先请求用户输入向队列中存储的数据的个数。2.然后开辟一个数组空间用来存储用户输入的数据,然后要求用户输入数据。3.然后建一个queue来存储
·
题目要求
编写一个实验程序,对于一个含n(n>1)个元素的queue队列容器qu,出队从队头到队尾的第k(1<=k<=n)个元素,其他队列元素不变。
题目分析
1.先请求用户输入向队列中存储的数据的个数。
2.然后开辟一个数组空间用来存储用户输入的数据,然后要求用户输入数据。
3.然后建一个queue来存储那些数组数据。
4.然后请求用户要求输出第k个的k为多少。
5.然后根据k出队,不是第k个的元素再入队,是第k个的元素不再入队,循环一周即可完成。
代码实现(C++)
#include <iostream>
#include <queue>
using namespace std;
/*
题目:出队第k个元素。
要求:编写一个实验程序,对于一个含n(n>1)个元素的queue<int>队列容器qu,出队从队头到队尾的第k(1<=k<=n)个元素,其他队列元素不变。
解题思路:
1.先请求用户输入向队列中存储的数据的个数。
2.然后开辟一个数组空间用来存储用户输入的数据,然后要求用户输入数据。
3.然后建一个queue来存储那些数组数据。
4.然后请求用户要求输出第k个的k为多少。
5.然后根据k出队,不是第k个的元素再入队,是第k个的元素不再入队,循环一周即可完成。
*/
void KRemove(int array[],int n,int k){
int i,j;
queue<int> qu; //搭建队列容器
for(i = 0; i<n; i++){
qu.push(array[i]); //向队列压入数据
}
for(i = 1; i<=n; i++){
j = qu.front(); //返回队头数据
qu.pop(); //出队操作
if(i!=k){
qu.push(j); //如果不是第k个元素,再压入队列,是第k个数据的话不再进队,循环一轮,保持取出第k个元素后队列不变。
}
}
//打印原始队列数据
cout << "原始数据:";
for(i = 0; i<n; i++){
cout << array[i] << " ";
}
cout << endl;
//打印去除第k个数据后的队列数据
cout << "去掉第" << k << "个数据之后的数据:";
for(i = 1; i<n; i++){
j = qu.front();
qu.pop();
cout << j << " ";
qu.push(j); //压入队列,保持队列不变
}
}
int main(){
int n,k;
cout << "请输入你想记录的数据的个数:";
cin >> n;
int array[n];
for(int i=0; i<n; i++){
cout << "请输入第"<<i+1<<"个数据:";
cin >> array[i];
}
cout << "请输入你想选出的k:";
cin >> k;
KRemove(array,n,k);
}
更多推荐
已为社区贡献1条内容
所有评论(0)