题目

10
enqueue 138
enqueue 1461
enqueue 12813
dequeue
enqueue 3627
dequeue
dequeue
enqueue 2291
enqueue 31871
dequeue
答案
138
1461
12813
3627
思路
显然要用满所有的空间,只能用flag法来进行栈满操作
代码
#include<bits/stdc++.h>
using namespace std;
int const MAXN = 100001;
struct cir_queue
{
long long ptr[MAXN];
int head = 0;
int tail = 0;
bool full = false;
int in(long long data)
{
if(head == tail && full)
{
cout << "Full" << endl;
return 0;
}
ptr[tail] = data;
tail = (tail + 1) % MAXN;
if(tail == head && !full) full = true;
return 1;
}
int out()
{
if(head == tail && !full)
{
cout << "-1" << endl;
return 0;
}
cout << ptr[head] << endl;
head = (head + 1) % MAXN;
if(tail == head - 1 && full) full = false;
return 1;
}
};
int main()
{
int n;
cin >> n;
string str;
cir_queue C;
for(int i = 0; i < n; i++)
{
cin >> str;
if(str == "enqueue")
{
long long temp;
cin >> temp;
C.in(temp);
}
else
C.out();
}
}
该博客介绍了如何使用C++实现一个环形队列,并提供了enqueue和dequeue操作的详细代码。通过满标志判断队列状态,实现队列的入队和出队操作。示例展示了在不同操作下队列的动态变化。
268

被折叠的 条评论
为什么被折叠?



