求助
查看原帖
求助
931976
lyx703楼主2024/4/10 17:15

小蒟蒻刚学队列,只会用数组,求大佬帮忙看看代码哪里有问题

//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--;
		}
	
	}
 
 } 
2024/4/10 17:15
加载中...