public T delete(myDLNode p) throws InvalidPositionException { if(p == null) { throw new InvalidPositionException("delete."); } if(p == head) { if(isEmpty()) { head = null; tail = null; } else if(head.getNext() == null) { head.next = p; p.prev = null; head = head.next; tail = head; size--; } else { head.next = p; p.prev = null; head = head.next; size--; } } else if(p == tail) { if(isEmpty()) { head = null; tail = null; } else if(tail.getPrevious() == null) { tail.prev = p; p.next = null; tail = tail.prev; head = tail; size--; } else { tail.prev = p; p.next = null; tail = tail.prev; head = tail; size--; } } else { p.getPrevious().setNext(p.getNext()); p.getNext().setPrevious(p.getPrevious()); p.setNext(null); p.setPrevious(null); size--; } return (p.getElement()); }