Esempio n. 1
0
  public E previous() {

    if (current.getPrevious() == null) {
      return null;
    }

    current = current.getPrevious();
    return current.getData();
  }
Esempio n. 2
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++;
  }
Esempio n. 3
0
  public E next() {

    if (current.getNext() == null) {
      return null;
    }

    previous = current;
    current = current.getNext();

    return current.getData();
  }
Esempio n. 4
0
  private void loop(E data) {

    current = first;

    while (current.getData() != data) {

      current = current.getNext();
      if (current == null) {
        return;
      }
    }
  }
Esempio n. 5
0
  /**
   * Method goes to the end of LinkedList
   *
   * @return last element of Linked List
   */
  public E getLast() {

    if (last == null) {
      while (current.getNext() != null) {
        current = current.getNext();
      }

      last = current;
    }

    current = last;

    return last.getData();
  }
Esempio n. 6
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++;
  }
Esempio n. 7
0
  /**
   * Method goes to begin of LinkedList
   *
   * @return first element of Linked List
   */
  public E getFirst() {

    current = first;

    return current.getData();
  }
Esempio n. 8
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--;
  }
Esempio n. 9
0
  public E get() {

    return current.getData();
  }