#include<iostream>
using namespace std;
#define MaxSize 50
#define ElemType int
typedef struct
{
ElemType data[MaxSize];
int front, rear;
}SqQueue;
void InitQueue(SqQueue& S)//初始化循环队列
{
S.front = S.rear = 0;
}
void EnQueue(SqQueue& S, ElemType e)//进队
{
if ((S.rear + 1) % MaxSize == S.front)
return;
S.data[S.rear] = e;
S.rear = (S.rear + 1) % MaxSize;
}
void DeQueue(SqQueue& S)//出队
{
if (S.rear == S.front)
return;
S.front = (S.front + 1) % MaxSize;
}
void GetFront(SqQueue S)//获取队首元素
{
if (S.front != S.rear)
{
cout << S.data[S.front] << " ";
S.front++;
}
}
bool IsEmpty(SqQueue S)//判断队列是否为空
{
if (S.rear == S.front)
return true;
else
return false;
}
bool IsFull(SqQueue S)//判断队列是否满
{
if ((S.rear + 1) % MaxSize == S.front)
return true;
else
return false;
}
int main()
{
int n; cin >> n;
int k; cin >> k;
SqQueue A;
InitQueue(A);
char a[100];
int x;
int times = 1;
while (!IsFull(A) && k--)
{
cin >> a;
if (a[0] == 'i')
{
cin >> x;
if (times < n)
{
times++;
EnQueue(A, x);
}
}
if (a[0] == 'o')
{
times--;
DeQueue(A);
}
}
while (IsEmpty(A) == false)
{
GetFront(A);
DeQueue(A);
}
}
965: 循环队列
最新推荐文章于 2024-05-20 15:29:54 发布