Anzeige:
Ergebnis 1 bis 2 von 2

Thema: Einfach verkettete Liste ... Element suchen und löschen

  1. #1
    Registrierter Benutzer Avatar von AureusPhoenix
    Registriert seit
    20.02.2010
    Beiträge
    91

    Einfach verkettete Liste ... Element suchen und löschen

    Hi Leute,
    ich hab ein kleines Problem. Und zwar möchte ich in einer einfach verketteten Liste ein Element eines bestimmten Inhalts suchen und löschen. Dazu hatte ich mir überlegt ne rekursive Funktion zu schreiben.
    Leider funktioniert das irgendwie nicht.

    Code:
    struct knot
    {
      string text;
      knot *child;
    };
    
    void del(knot *root, string to_delete)
    {
    	if (root->child == NULL || root==NULL) return;
    	//if (root->text == to_delete) root->child = root->child->child;
    	del(root->child, to_delete);	
    }
    Ich hab die mittlere Zeile schonmal auskommentiert, weil ich nicht weis, ob ich die so schreiben darf. Aber auch so bekomm ich schon nen Speicherzugriffsfehler. Wisst ihr, woran das liegen kann? Darf ich die rekursion so machen, wie im Code?

    Schonmal vielen Dank!
    Grüße

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Die Bedingung in einer ersten Übrprüfung ist in der falschen Reihenfolge. Du musst zuerst prüfen ob der übergebene Pointer gültig ist und dann erst darauf zugreifen.

    Im auskommentierten Code verwirfst du das Element nach dem das du eigentlich löschen willst.
    Weiters hast du dieses entfernte Glied dann auch noch "verloren" (es wird nicht gelöscht und du hast keinen Pointer mehr darauf).
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •