Új hozzászólás Aktív témák

  • thiclyoon

    aktív tag

    Sziasztok!

    Nem rég óta tanulom a C-t és a C++-t. Jelenleg bináris fákkal szórakozok egy ideje, előkerült néhány probléma. Pl. hogyan tudom megszámolni, hogy egy fában hány elem van? (Igazából az átlagukra is szükség lenne, szóval az összeg is kérdéses (egy elem többször is szerepelhet, a db is tárolva van), de azt jobban el tudom képzelni.)

    Valamint kódszinten is elvesztem (vagy a kiíratással, vagy a törléssel van a gond. Addig bütyköltem, hogy már teljesen belezavarodtam - átnéztem már stackoverflow-ra és még néhány oldalra is), ha van ötletetek mi a ludas, várom a tanácsokat :)

    (Furcsa lehet a pointer-pointer, de a teljes törléshez szerintem ez kéne. Ja és remélem érthető a kód azért.)

    void del(pont ** Head)
    {
    if (*Head != NULL)
    {
    del(&((*Head)->Left));
    del(&((*Head)->Right));
    (*Head)->Left = NULL; //kerdeses hogy kell-e
    (*Head)->Right = NULL; //szinten
    free(*Head);
    }
    return;
    }

    illetve

    void kiir(pont * Head)
    {
    if (Head == NULL)
    {
    return;
    }
    if (Head->Left != NULL)
    {
    kiir(Head->Left);
    }
    printf("%d, %d-szor\n", Head->adat, Head->darab);
    if (Head->Right != NULL)
    {
    kiir(Head->Right);
    }
    return;
    }

    Futtatáskor a végén (del után) a Head ide mutat: 00794D38 (miért nem nullptr? nem az kéne legyen free után?), valamint nincs se error se warning, csak futás idejű hiba: Exception Thrown (az if (Head->Left != NULL) sorban a kiir függvényben). Köszönöm előre is, minden tanács jól jön! :R

Új hozzászólás Aktív témák