Написание отдельного класса Linked List с нуля - удалить, методы indexOf не работают - PullRequest
0 голосов
/ 05 апреля 2020

Я пишу односвязный класс списка с нуля, но где-то мое удаление по индексу и вероятные методы indexOf не работают.

    public E remove(int index){
    if(index < 0 || index > size-1)
        throw new IndexOutOfBoundsException("IndexOutOfBounds");

    if(index == 0) {
        E temp1 = head.data;
        Node temp2 = head.next;
        head.next = null;
        head = temp2;
        return temp1;
    }

    Node<E> hopper = getNode(index-1);
    Node<E> toRemove = hopper.next;

    E temp = toRemove.data;
    hopper.next = hopper.next.next;
    toRemove.data = null;
    toRemove.next = null;
    return temp;
}

Что касается удаления, я подозреваю, что есть какой-либо случай или какая-то логическая ошибка. В моем тестере JUnit он, кажется, вообще ничего не удаляет. А что касается indexOf:

    public int indexOf(Object o){
    if(o == null) {
        Node<E> hopper = head;
        for(int i = 0; i < size-1; i++) {
            if(hopper.data == o)
                return i;
            hopper = hopper.next;
    }}

    else {
        Node<E> hopper = head;
        for(int i = 0; i < size-1; i++) {
            if(hopper.data.equals(o))
                return i;
            hopper = hopper.next;
            }}

    return -1;
}

В моем тестере JUnit метод содержит не работает, и этот метод буквально просто вызывает indexOf для выполнения поиска.

Я могу предоставить любой дополнительный код, если это необходимо. Если кто-то может помочь объяснить, где я иду не так, я был бы очень признателен. Спасибо!

...