bool ListaAdjacente::addLast(int id, int forca)
{
    Aresta * p = new Aresta();
    p->setId(id);
    p->setForca(forca);
    
    if(vazia()){
        origem = p;
        fim = p;
    } else {
        if(hasInList(id)){
            return false;
        }
        Aresta * aux = new Aresta();
        aux = fim;
        aux->setProx(p);
        fim = p;
    }
    
    size++;
    return true;
}
void ListaAdjacente::removeByIndex(int pos){
    if(origem == NULL)
        return;
    
    if(origem->getId() == pos){
        removeFirst();
        return;
    }
    
    Aresta * p = origem;
    
    while(p->getProx() != NULL && p->getProx()->getId() != pos)
        p = p->getProx();
    
    if (p->getProx() == NULL)
        return;
    
    Aresta * aux = p->getProx();
    
    p->setProx(aux->getProx());
    
    --size;
    delete aux;
}