// Añade un elemento a la lista (en el lugar de orden que le corresponde) public void add(T elem) { DoubleNode<T> nuevo = new DoubleNode<T>(elem); DoubleNode<T> actual = first; while (actual != null && actual.getElement().compareTo(elem) < 0) // La lista no es vacía Y no ha encontrado la posición { actual = actual.getNext(); } if (actual == null) { // la lista es vacía o se inserta al final if (first != null) { // insertar al final last.setNext(nuevo); nuevo.setPrevious(last); last = nuevo; } else { // la lista es vacía last = nuevo; first = nuevo; } } else if (actual == first) { // inserción al principio nuevo.setNext(first); first.setPrevious(nuevo); first = nuevo; } else { nuevo.setNext(actual); nuevo.setPrevious(actual.getPrevious()); actual.setPrevious(nuevo); nuevo.getPrevious().setNext(nuevo); } length++; }
@Override public void add(T element) { Comparable temp = (Comparable) element; DoubleNode e = new DoubleNode(element); DoubleNode tt; boolean found = false; // se vazia if (isEmpty()) { super.setRear(e); super.setFront(e); } else { tt = super.getFront(); while (tt != null && !found) { if (temp.compareTo(tt.getElement()) > 0) { tt = tt.getNext(); } else { found = true; } } // adicionar a cauda if (tt == null) { super.getRear().setNext(e); e.setPrevious(super.getRear()); super.setRear(e); // adicionar a front } else if (tt.equals(super.getFront())) { e.setNext(super.getFront()); super.getFront().setPrevious(e); super.setFront(e); } else { // adicionar ao meio e.setPrevious(tt.getPrevious()); e.setNext(tt); tt.setPrevious(e); e.getPrevious().setNext(e); } } super.setCount(super.getCount() + 1); }