본문 바로가기
PS 문제 풀이/Jungol

[Jungol] 정올 3701 queue api

by 까망 하르방 2021. 3. 18.
반응형

출처: jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=3050&sca=99&page=24

Approach

Queue 자료구조를 구현하는 문제

 

[큐] Queue란? 

 

[큐] Queue란?

Queue란? 선입선출(First In First Out, FIFO)의 자료 구조 ▶ 큐(Queue)는 한쪽에서 삽입(Push, Enqueue) 하며, 다른 한쪽에서 빠져나오는(Pop, Dequeue) 구조 두 지점을 와 로 표현한다. (Front, Rear) ▶ C++..

zoosso.tistory.com


#ifndef NULL
#define NULL 0
#endif
const int SIZE = 100010;
struct Node {
    int num;
    Node* next;
    Node() {
        num = 0, next = NULL;
    }
    Node(int ni, Node* np) {
        num = ni, next = np;
    }
    ~Node() {
        delete next;
    }
    void erase(Node*& ref) {
        ref = next;
        next = NULL;
        delete this;
    }
}buf[SIZE];
int bcnt;
 
struct Queue {
    Node*head, *tail;
    int cnt;
    Queue() {
        head = tail = new Node();
        cnt = 0;
    }
    ~Queue() {
        cnt = 0;
        delete head;
        head = tail = NULL;
    }
    bool empty() { return cnt == 0; }
    int size() { return cnt; }
    int front() { return head->next->num; }
    int back() { return tail->num; }
    void push(int num) {
        cnt++;
        tail->next = new Node(num, NULL);
        tail = tail->next;
    }
    void pop() {
        if (cnt == 0) return;
        cnt--;
        head->erase(head);
    }
}que;
 
Queue* newQueue() {
    return new Queue();
}
void delQueue(Queue*que) {
    delete que;
}
bool empty(Queue*que) {
    return que->empty();
}
int size(Queue*que) {
    return que->size();
}
int front(Queue*que) {
    return que->front();
}
int back(Queue*que) {
    return que->back();
}
void push(Queue*que, int num) {
    return que->push(num);
}
void pop(Queue*que) {
    return que->pop();
}

 

반응형

댓글