#include <iostream>
#include <cstdlib>
#define error 1000001
using namespace std;
typedef int ElementType;
struct QNode{
ElementType *Data;/* 存储元素的数组 */
int rear;/* 队列的头、尾指针 */
int front;
int size;/* 当前队列元素数量 */
int MaxSize;/* 队列最大容量 */
};
typedef struct QNode *Queue;
Queue CreateQueue( int MaxSize )
{
Queue Q = (Queue)malloc(sizeof(struct QNode));
Q->Data = (ElementType *)malloc(MaxSize * sizeof(ElementType));
Q->front = Q->rear = 0;
Q->MaxSize = MaxSize;
Q->size=0;
return Q;
}
void AddQ(Queue PtrQ,ElementType item)
{
if((PtrQ->rear+1)%PtrQ->MaxSize==PtrQ->front)
{
return;
}
PtrQ->rear=(PtrQ->rear+1)%PtrQ->MaxSize;
PtrQ->Data[PtrQ->rear]=item;
PtrQ->size++;
}
ElementType DeleteQ(Queue PtrQ)
{
if(PtrQ->front==PtrQ->rear)
{
return error;
}
PtrQ->front=(PtrQ->front+1)%PtrQ->MaxSize;
PtrQ->size--;
return PtrQ->Data[PtrQ->front];
}
bool IsFull( Queue Q )
{
return ((Q->rear+1)%Q->MaxSize == Q->front);
}
bool IsEmpty( Queue Q )
{
return (Q->front == Q->rear);
}
int Getlen(Queue ptrQ)
{
return ptrQ->size;
}
int main()
{
int n,chose,num,rs;
Queue Q;
Q=CreateQueue(200);
cin>>n;
for(int i=0;i<n;i++)
{
cin>>chose;
switch(chose)
{
case 1:
cin>>num;
AddQ(Q,num);
break;
case 2:
rs=DeleteQ(Q);
if(rs==error)
{
cout<<"no"<<endl;
}else
{
cout<<rs<<endl;
}
break;
case 3:
cout<<Getlen(Q)<<endl;
break;
}
}
return 0;
}
队列
最新推荐文章于 2024-06-08 14:55:47 发布