본문 바로가기
둥지/알고리즘

큐 구현

by 까닭 2023. 2. 10.
#include <iostream>
#include <assert.h>

enum
{
    MAX_SIZE = 3
};

template<typename T>
class MyQueue
{
    T Array_[MAX_SIZE];
    size_t Count_ = 0;
    size_t Front_ = 0;
    size_t Rear_ = 0;

public:
    void Enqueue(T Data)
    {
        if (true == IsFull())
        {
            assert(false);
        }

        Array_[Rear_] = Data;
        Rear_ = (Rear_ + 1) % MAX_SIZE; //원형 큐
        ++Count_;
    }

    bool IsFull()
    {
        return Front_ == (Rear_ + 1) % MAX_SIZE;
    }

    bool IsEmpty()
    {
        return Front_ == Rear_;
    }

    T Dequeue()
    {
        if (true == IsEmpty())
        {
            assert(false);
        }

        T Temp = Array_[Front_];
        Array_[Front_] = T();
        Front_ = (Front_ + 1) % MAX_SIZE;
        --Count_;

        return Temp;
    }
};

int main()
{
    MyQueue<int> queue;

    for (int i = 0; i < 5; ++i) 
    {
        queue.Enqueue(i * 2);
    }

    for (int i = 0; i < 5; ++i)
    {
        int a = queue.Dequeue();
    }

}

 

'둥지 > 알고리즘' 카테고리의 다른 글

[백준 1992] 쿼드 트리  (0) 2023.02.20
리스트 구현  (0) 2023.02.17
스택 구현  (0) 2023.02.09
가변 배열 구현  (0) 2023.02.09
배열 구현  (0) 2023.02.08