В настоящее время я реализую круговой двусвязный список с фиктивным головным узлом.Мои функции добавления (добавление элемента по заданному индексу, в начале или в конце), кажется, работают безупречно, но я не могу экстраполировать, чтобы создать функционирующий indexOf (который возвращает индекс элемента) или удалить (удалить узел взаданный индекс) метод.
При отладке indexOf, кажется, захватывает неправильный индекс.Когда дан список:
[Alabama, Alaska, Arizona, Arkansas, Wyoming, California]
Вызов
list.remove(indexOf("Wyoming"));
Возвращает
[Alabama, Alaska, Arizona, Arkansas, Wyoming, ]
Вот функция indexOf:
public int indexOf(E e) {
Node<E> current = head;
for (int i = 0; i < size; i++) {
if (e.equals(current.element)) {
return i;
}
current = current.next;
}
return -1;
}
А вот и функция удаления:
public E remove(int index) {
if (index < 0 || index >= size) {
throw new NoSuchElementException();
} else if (index == 0) {
return removeFirst();
} else if (index == size - 1) {
return removeLast();
} else {
Node<E> previous = head;
for (int i = 1; i < index; i++) {
previous = previous.next;
}
Node<E> current = previous.next;
previous.next = current.next;
size--;
return current.element;
}
}