/** * Removes node. If there is no Node with data, it returns silently. * * @param data */ public void remove(E data) { loop(data); if (current == null) { return; } boolean isFirstRemoved = current.getPrevious() == null; boolean isLastRemoved = current.getNext() == null; if (isFirstRemoved) { first = current.getNext(); current = first; current.setData(null); } else if (isLastRemoved) { current = current.getPrevious(); last = current; current.setNext(null); } else { DoubleLinkNode<E> previous = current.getPrevious(); previous.setNext(current.getNext()); current = current.getNext(); current.setPrevious(previous); } size--; }
public void insert(E data, int id) { current = first; for (int i = 0; i < id - 1; i++) { previous = current; current = current.getNext(); } DoubleLinkNode<E> insertedNode = new DoubleLinkNode<E>(); insertedNode.setData(data); insertedNode.setNext(current); insertedNode.setPrevious(previous); boolean isHead = id == 1; if (isHead) { first = insertedNode; } else { previous.setNext(insertedNode); DoubleLinkNode<E> originalNode = current; current = insertedNode; current.setNext(originalNode); originalNode.setPrevious(current); } size++; }
public void add(E e) { DoubleLinkNode<E> newNode = new DoubleLinkNode<E>(); newNode.setData(e); if (size == 0) { first = newNode; last = newNode; current = first; } else { previous = last; last = newNode; current = newNode; previous.setNext(newNode); current.setPrevious(previous); current.setNext(null); } size++; }