optimization and fix bug

This commit is contained in:
shellhub
2019-10-09 11:24:35 +08:00
parent 993f30bc04
commit ccea4b56e3

View File

@ -44,22 +44,20 @@ public class CircleLinkedList<E> {
//catching errors //catching errors
throw new IndexOutOfBoundsException("position cannot be greater than size or negative"); throw new IndexOutOfBoundsException("position cannot be greater than size or negative");
} }
Node<E> iterator = head.next;
//we need to keep track of the element before the element we want to remove we can see why bellow. //we need to keep track of the element before the element we want to remove we can see why bellow.
Node<E> before = head; Node<E> before = head;
for (int i = 1; i <= pos; i++) { for (int i = 1; i <= pos; i++) {
iterator = iterator.next;
before = before.next; before = before.next;
} }
E saved = iterator.value; Node<E> destroy = before.next;
E saved = destroy.value;
// assigning the next reference to the the element following the element we want to remove... the last element will be assigned to the head. // assigning the next reference to the the element following the element we want to remove... the last element will be assigned to the head.
before.next = iterator.next; before.next = before.next.next;
// scrubbing // scrubbing
iterator.next = null; destroy = null;
iterator.value = null; size--;
return saved; return saved;
} }
} }