题解 | #【模板】循环队列#
【模板】循环队列
https://www.nowcoder.com/practice/0a3a216e50004d8bb5da43ad38bcfcbf
#include <iostream>
const int N = 1e5 + 5;
using namespace std;
struct queue {
int a[N];
int rear, head;
queue() {
rear = head = 0;
}
};
int len;
bool isFull(queue& que) {
if (que.head == (que.rear + 1) % len)
return true;
return false;
}
bool isEmpty(queue& que) {
if (que.head == que.rear)return true;
return false;
}
void push(queue& que, int num) {
if (!isFull(que)) {
que.a[que.rear] = num;
que.rear = (que.rear + 1) % len;
} else
cout << "full" << endl;
}
void front(queue& que) {
if (!isEmpty(que))cout << que.a[que.head] << endl;
else cout << "empty" << endl;
}
void pop(queue& que) {
if (!isEmpty(que)) {
int t;
t = que.a[que.head];
que.head = (que.head + 1) % len;
cout << t << endl;
} else {
cout << "empty" << endl;
}
}
int main() {
int q;
queue que;
cin >> len >> q;
len ++;
while (q--) {
string s;
cin >> s;
if (s == "push") {
int t;
cin >> t;
push(que, t);
}
if(s == "front") {
front(que);
}
if (s == "pop") {
pop(que);
}
}
}
// 64 位输出请用 printf("%lld")
360集团公司福利 435人发布
