Co sa tyka toho spojkovania (Add_on_First) tam vidim zatial problem v tomto
if(last == NULL){
last = first;
last->next = first->next;
last->prev = first->prev;
}
konkretne to
last->next = first->next;
last->prev = first->prev;
je nezmysel pretoze last a first ukazuje na stejnu adresu takze robis vlastne neco ako X=X a Y=Y. Ale neni to chyba, len zbytocnost.