蒟蒻刚学队列,只会用数组,50分,后两个点RE,求调
//1996
#include<bits/stdc++.h>
using namespace std;
const int MAXN=500;
int n,m;
struct ArrayQueue{
//数据元素,节点
int data[MAXN];
int head; //头节点的下标
int tail; //尾节点的下标
int queue_size; //队列大小
//初始化函数,构造函数
ArrayQueue(){
head=1;
queue_size=n;
tail=head+queue_size;
}
//入队操作
void push(int x){
if(queue_size<MAXN)
{
data[tail]=x;
tail++;
queue_size++;
}
}
//出队
void pop(){
if(queue_size!=0)
{
head++;
queue_size--;
}
}
//取出队首元素
int pick(){
if(queue_size!=0) return data[head];
}
int size(){
return queue_size;
}
};
int main()
{
int q,i=1;
ArrayQueue a;
cin>>n>>m;
//q=n;
for(int j=1;j<=n;j++)
{
a.push(j);
}
while(a.size())
{
if(i!=m)
{
int x=a.pick();
a.pop();
a.push(x);
i++;
}
else
{
int y=a.pick();
cout<<y<<" ";
a.pop();
i=1;
//q--;
}
}
}