본문 바로가기
자료구조/Queue

[깡구현] QUEUE_2

by BAYABA 2020. 5. 16.

 

문제: 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