Remove-Methode für linkedList-Implementierung in Java

Ich habe diese Methode aus der Vorlesung auf das entfernen von Elementen aus linkedList bei specified index.
Ich verstehe, wie die Methode funktioniert, aber ich verstehe nicht, warum die for-loop Blätter der current node pointer zwei index vor dem gewünschten index.

Hier ist die Methode:

public void remove(int index) {
        if (index == 0) {
            //removing the first element must be handled specially
            front = front.next;
        } else {
            //removing some element further down in the list;
            //traverse to the node before the one we want to remove
            ListNode current = front;
            for (int i = 0; i < index - 1; i++) {
                current = current.next;
            }

            //change its next pointer to skip past the offending node
            current.next = current.next.next;
        }
    }

Den for-loop geht aus 0 to < index-1, während ich dachte, es sollte gehen von 0 to < index. Auf diese Weise ist der Zeiger auf eine index vor der index musste gelöscht werden. Jedoch, die obige Methode funktioniert gut.

ZB:
in der unten LinkedList Remove-Methode für linkedList-Implementierung in Java

Betrachten wir entfernen Node C. Durch die oben genannten loop-Konstrukt current pointer wird zeigen Node A und current.next wird Node B. current.next.next wird Node C. Dabei current.next=current.next.next führt Node B löschen, anstatt Node C.

Ich denke, etwas ist falsch mit meinem Verständnis, kann jemand erklären?

InformationsquelleAutor brain storm | 2014-01-06

Schreibe einen Kommentar