본문 바로가기
Data Structure

[Data Structure] Queue

by Saerong2 2020. 10. 24.

 

소스코드

#include <cstdio>

template<class T> class Queue {
public:
    int head;
    int tail;
    int size;
    T* value;

    Queue(int sz) {
        size = sz;
        head = tail = 0;
        value = new T[size+1];
    }

    ~Queue() {
        delete[] value;
    }

    void enqueue(T val) {
        if (!isFull()) {
            value[tail] = val;
            tail = (tail + 1) % size;
        }
        else {
            puts("quque is full");
        }
    }

    T dequeue() {
        if (!isEmpty()) {
            T val = value[head];
            head = (head+1) % size;
            return val;
        }
        else {
            puts("queue is empty");
            return -1;
        }
    }

    bool isFull() {
        if ((tail + 1) % size == head) return true;
        return false;
    }

    bool isEmpty() {
        if (head == tail) return true;
        return false;
    }

};

int main()
{
    Queue<int> q(3);
    q.enqueue(1);
    q.enqueue(2);
    q.enqueue(3);
    q.enqueue(4);
    printf("%d\n", q.dequeue());
    printf("%d\n", q.dequeue());
    printf("%d\n", q.dequeue());
    printf("%d\n", q.dequeue());
}

 

 

 

 

 

공부한 것을 정리하기 위한 기록입니다.

틀린 부분이 있다면 부드럽게 알려주세요.

'Data Structure' 카테고리의 다른 글

[Data Structure] Stack  (0) 2020.10.24

댓글