Frage von cmrrr, 16

Was bedeutet in dem Beispiel (s.unten) "del.next.prev = del.prev" und "del.prev.next = del.next"?

/*Function to delete a node in a Doubly Linked List. head_ref --> pointer to head node pointer. del --> pointer to node to be deleted. */ void deleteNode(Node head_ref, Node del) {

    /* base case */
    if (head == null || del == null) {
        return;
    }

    /* If node to be deleted is head node */
    if (head == del) {
        head = del.next;
    }

    /* Change next only if node to be deleted is NOT the last node */
    if (del.next != null) {
        del.next.prev = del.prev;
    }

    /* Change prev only if node to be deleted is NOT the first node */
    if (del.prev != null) {
        del.prev.next = del.next;
Antwort
von Tschoo, 6

Was es bedeutet, steht doch in den Kommentaren.

del.next.prev = del.prev
zum nächsten Knoten wird nur "weitergeschaltet", wenn der zu löschende NICHT der letzte Knoten (der Liste) ist.

del.prev.next = del.next 

zum vorherigen Knoten wird nur gegangen, wenn der aktuelle Knoten NICHT der erste (der Liste) ist

Gruß

Kommentar von cmrrr ,

Die Kommentare habe ich an sich verstanden. Aber was genau meint man mit "del.prev.next = del.next" bzw. "del.next.prev = del.prev"?? 

Kommentar von Tschoo ,

Entschuldigung -- wie willst du die Kommentare verstanden habe, wenn du nicht weist was üblicher weise *prev* und *next* in Programmiersprachen bedeutet.

Es geht um eine doppelt verkettete Liste *prev* ist das previous (vorherige) Element und *next* ist das next (nächste) Element.

Zum vorherigen btw. nächsten Element (knoten) kann nur gegangen werden, wenn dieses vorhanden ist.

Wenn du nicht weist, was eine Liste ist -- dann weist du auch nicht was eine verkettete Liste ist und schon gar nicht was eine doppelt verkettete Liste ist und dann nützten dir alle Erklärungen von mir oder von irgend jemanden nichts.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten