문제: https://www.acmicpc.net/problem/10845
값을 넣을 때는 r (=rear)을 사용합니다.
값을 뺄 때는 f (=front)을 사용합니다.
큐가 비어있는 조건은 front == rear 일 때 입니다.
#define QUEUE_SIZE 100001
typedef struct QUEUE {
int Q[QUEUE_SIZE];
int f, r, sz;
QUEUE() {
f = r = sz = 0;
}
bool empty() {
return (f == r);
}
int front() {
if (empty()) return -1;
else return Q[f];
}
int back() {
if (empty()) return -1;
else return Q[(r-1 + QUEUE_SIZE) % QUEUE_SIZE];
}
int pop() {
if (empty()) return -1;
else {
int ret = Q[f];
f = (f + 1) % QUEUE_SIZE;
sz--;
return ret;
}
}
void push(int val) {
Q[r] = val;
sz++;
r = (r + 1) % QUEUE_SIZE;
}
int size() const {
return sz;
}
}QUEUE;
코드: https://github.com/cottory/algorithm/blob/master/BOJ/BOJ10845.cc
'자료구조 > Queue' 카테고리의 다른 글
[깡구현] QUEUE (0) | 2020.03.04 |
---|