Exemplo n.º 1
0
  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++;
  }
Exemplo n.º 2
0
  /**
   * 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--;
  }
Exemplo n.º 3
0
  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++;
  }