注意:
1, q.push(q.front());
q.pop();
这行代码是关键,用来实现循环队列;
2,注意初定义数据时i取1,不然在赋值的时候会出现偏差;
3,!q.empty()用来 判断队列为空,既输出完了所有数据,而不是front==tail,这会导致队列中还存在一个数据
4,k来决定报数的人是多少,从一开始,直到m值出现;
AC代码如下
#include<iostream>
#include<queue>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
int k=1;
queue<int>q;
for(int i=1;i<=n;i++)
{
q.push(i);
}
while(!q.empty())
{
if(k==m)
{
cout<<q.front()<<" ";
q.pop();
k=1;
}
else{
q.push(q.front());
q.pop();
k++;
}
}
return 0;
}