#ifndef _QUEUE_HPP_
#define _QUEUE_HPP_

#include <iostream>
#include "list.hpp"
template <class T>
class Queue
{
private:
    List<T> q;
public:

    T operator[](int i)
    {
        return q[i];
    }

    int size()
    {
        return q.size();
    }
    bool empty()
    {
        return size() ? false : true;
    }
    T enqueue(T e)
    {
        return q.firstInsert(e);
    }
    T dequeue()
    {
        return q.removeLast();
    }
    T front()
    {
        return q.last()->data;
    }

    T back()
    {
        return q.first()->data;
    }

};
#endif