• Wir präsentieren Dir heute ein Stellenangebot für einen Frontend-Entwickler Angular / Java in Braunschweig. Hier geht es zur Jobanzeige

C - Datei einlesen Inhalt in struct speichern

O

ocsme

Top Contributor
Danke für den Hinweis.

Das mit dem Löschen lass ich sein keine Ahnung wie der Artikel zurück gegeben werden kann!

Danke für die nette Hilfe.

Java:
void loesche_knoten(node **zeiger) {
    node *temp;

    if ((*zeiger) != NULL) {
        if ((*zeiger)->left == NULL && (*zeiger)->right == NULL) { //Fall 1 Blattknoten
            free(*zeiger);
            *zeiger = NULL;
        } else if ((*zeiger)->left == NULL) { //Fall 2 ein untergeordnetes Element
            temp = *zeiger;
            *zeiger = (*zeiger)->right;
            free(temp);
        } else if ((*zeiger)->right == NULL) { //Fall 2 ein untergeordnetes Element
            temp = *zeiger;
            *zeiger = (*zeiger)->left;
            free(temp);
        } else { //Fall 3 im linken Teilbaum den größten Wert
            temp = (*zeiger)->left;
            node *hilfsZeiger = NULL;
            while(temp->right != NULL) {
                hilfsZeiger = temp;
                temp = temp->right;
            }
            hilfsZeiger->right = temp->left;
            temp->left = (*zeiger)->left;
            temp->right = (*zeiger)->right;
            free(*zeiger);
            *zeiger = temp;
        }
    }
}

void loesche(node **zeiger, int such) {
    if ((*zeiger) == NULL)
        printf("Knoten nicht gefunden!\n");
    else if ((*zeiger)->artikel->artikelnr == such) /* Gefunden! */
        loesche_knoten(zeiger);
    else if ((*zeiger)->artikel->artikelnr >= such)
        loesche(&((*zeiger)->left), such);
    else
        loesche(&((*zeiger)->right), such);
}

void entfernen(baum *b, int nr) {
    loesche(&b->root, nr);
}
 
Zuletzt bearbeitet:
O

ocsme

Top Contributor
mhhh mir ist aufgefallen das ich ja bei
Java:
artikel *tmp = (*zeiger)->artikel;
Die Adresse Speichere und nach dem ich loesche_knoten ausführe mit free(*Zeiger) diese stelle frei gebe. Somit Zeigt ja mien artikel *tmp auf eine freigegebene Stelle 🙃

Wie bekomme ich die Adresse von der Adresse? Mit artikel **tmp? oh weh oder hab ich wieder denkfehler wollte es eigentlich sein lassen aber irgendwie wurmt mich das doch =D
 

Ähnliche Java Themen

Anzeige

Neue Themen


Oben