小蒟蒻刚学队列,只会用数组,求大佬帮忙看看代码哪里有问题
//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=0;
ArrayQueue a;
cin>>n>>m;
q=a.size();
for(int i=1;i<=n;i++)
{
a.data[i]=i;
}
while(q)
{
if(i!=m)
{
int x=a.pick();
a.pop();
a.push(x);
i++;
}
else
{
int y=a.pick();
a.pop();
cout<<y<<" ";
i=0;
q--;
}
}
}