求助,80分,2,3没过
查看原帖
求助,80分,2,3没过
659308
aa9527楼主2022/7/15 16:01
#include<iostream>
using namespace std;

typedef struct
{
	int data[100];
	int front; 				//头的数组下标 
	int rear;				//尾,储存队尾元素下一个的数组下标 
	int max;				//队列实际长度 
}Queue;
//初始化 
void InitQueue(Queue &Q)
{
	Q.front=0;
	Q.rear=0;
	for(int i=0;i<Q.max;i++)
	{
		Q.data[i]=-1;	//初始化为-1 
	}
}
//判断某个元素是否在队列里 
bool Find(Queue Q,int e)
{
	for(int i=0;i<Q.max;i++)
	{
		if(Q.data[i]==e)
			return true;
	}
	return false;
}
//判断队满 
bool QueueFull(Queue Q)		
{
	if(Q.front==Q.rear && Q.data[Q.rear]!=-1)
		return true;
	else
		return false;
}
//出队
void DeQueue(Queue &Q)
{
	Q.data[Q.front]=-1;
	Q.front=(Q.front+1)%Q.max;
}
//入队 
void EnQueue(Queue &Q, int e)
{
	Q.data[Q.rear]=e;
	Q.rear=(Q.rear+1)%Q.max;
}
int main()
{
	int M=0;
	int N=0;
	cin>>M>>N;
	Queue Q;
	InitQueue(Q);
	Q.max=M;
	int n=0;
	for(int i=1;i<=N;i++)
	{
		int e=0;
		cin>>e;
		if(Find(Q,e)==0)		//如过元素e不在队列中 
		{
			if(QueueFull(Q)==1)	//队满则需要队头元素出队 
				DeQueue(Q);
			EnQueue(Q,e);
			n++;
		}
	}
	cout<<n;
}
2022/7/15 16:01
加载中...