#include "irdeque.h"

bool irdeque::addToIRDequeLeft(int id) {
    if(in_irdeque(id)) {
        return false;
    }
    l.insertHead(id);
    return true;
}

bool irdeque::removeFromIRDequeLeft() {
    int id = l.at(l.size() - 1);
    l.remove(id);
    return true;
}

bool irdeque::removeFromIRDequeRight() {
    int id = l.at(0);
    l.remove(id);
    return false;
}

int irdeque::showTopOfIRDequeLeft() {
    if(l.size() == 0) {
        return -1;
    }
    int left = l.at(l.size() - 1);
    return left;
}

int irdeque::showTopOfIRDequeRight() {
    if(l.size() == 0) {
        return -1;
    }
    int right = l.at(0);
    return right;
}

int irdeque::showSizeOfIRDeque() {
    return l.size();
}

bool irdeque::in_irdeque(int id) {
    node* node_ptr = l.head;
    while(node_ptr != NULL) {
        if(node_ptr->id == id) {
            return true;
        }
        node_ptr = node_ptr->next;
    }
    return false;
}
