/** * Deletes a point from a given index. * * @param index the index * @return true, if successful */ public boolean deleteIndex(int index) { if (index == 0) { if (size == 1) { clearList(); return true; } start = start.getNext(); start.setPrev(end); end.setNext(start); size--; return true; } if (index == (size - 1)) { end = end.getPrev(); end.setNext(start); start.setPrev(end); size--; return true; } PointElement pointer = start.getNext(); for (int i = 1; i < size; i++) { if (i == index) { PointElement previousElement = pointer.getPrev(); PointElement nextElement = pointer.getNext(); previousElement.setNext(nextElement); nextElement.setPrev(previousElement); size--; return true; } pointer = pointer.getNext(); } return false; }
/** * Insert point at the end of the list. * * @param point the point */ public void insertEnd(Point point) { PointElement newElement = new PointElement(point, null, null); if (start == null) { startNotInitialized(newElement); } else { newElement.setPrev(end); end.setNext(newElement); start.setPrev(newElement); newElement.setNext(start); end = newElement; } size++; }
/** * Insert a point at a given index. * * @param point the point * @param index the index */ public void insertIndex(Point point, int index) { PointElement newElement = new PointElement(point, null, null); if (index == 0) { insertStart(point); return; } PointElement pointer = start; for (int i = 1; i <= size; i++) { if (i == index) { PointElement nextElement = pointer.getNext(); pointer.setNext(newElement); newElement.setPrev(pointer); newElement.setNext(nextElement); nextElement.setPrev(newElement); } pointer = pointer.getNext(); } size++; }
/** * This method is a help method and is invoked when the list is still empty. * * @param newElement the new element */ private void startNotInitialized(PointElement newElement) { newElement.setNext(newElement); newElement.setPrev(newElement); start = newElement; end = start; }