I am really struggling in adding a node at the end of a double linked list, adding to the head was easy, now I really can't find a way to add to the end. It seems stupid but I'm losing a lot of time, so if anyone can help that would be appreciated. Here's my partial implementation in Java.
public class DoublyLinkedList implements Iterable<Node>, Iterator<Node> {
private Node head = new Node();
private Node tail = head;
private Node current;
private Node previous;
@Override
public Iterator<Node> iterator() {
    current = head;
    previous = null;
    return this;
}
public void addToHead(Node node) {
    Node next = head.getNext(null);
    Node previous = head.getNext(next);
    head.setNext(previous, node);
    node.setNext(null, head);
    head = node;
}
@Override
public boolean hasNext() {
    return current != tail;
}
@Override
public Node next() {
    Node tmp = previous;
    previous = current;
    current = current.getNext(tmp);
    return previous;
}
And here's Node Class
public class Node {
Node next = null;
Node previous = null;
Node getNext(Node node){
    if(node == next){
        return previous;
    }
    if(node == previous){
        return next;
    }
    throw new IllegalStateException("something went wrong");
}
void setNext(Node node, Node next){
    if(node == previous){
        previous = next;
    }
    else if(node == this.next){
        this.next = next;
    }
    else{
        throw new IllegalStateException("something went wrong");
    }
}
}
I hope you will understand the code above, basically I will need the following :
public void addToEnd(Node node) {
    // implementation
}
 
     
    