Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Budowanie drzewa binarnego przez przenoszenie wskaznika korzenia jako argument funkcji rekurencyjnej

Ostatnio zmodyfikowano 2015-08-26 21:03
Autor Wiadomość
heroarthur
Temat założony przez niniejszego użytkownika
Budowanie drzewa binarnego przez przenoszenie wskaznika korzenia jako argument funkcji rekurencyjnej
» 2015-08-26 20:39:26
witajcie, pragne zbudowac drzewo binarne gdzie kazdy wezel ma jakies tam zmienne, i chce je tak robic ze tworze sobie najpierw korzen:

WEZEL * korzen = new WEZEL;

i podaje go jako argument funkcji zeby w funkcji zrobic tak dwa kolejne wierzcholki i po ich zrobieniu przypisac je do tego juz utworzonego korzenia dzieki wskaznikowi ktory podalem wlasnie jako argument, a nastepnie jesli dla kazdego z nowo utworzonych wierzcholkow nalezy dalej robic poddrzewa to postąpie anologicznie wywolujac funkcji rekurencyjnie I TERAZ moj problem polega na tym ze chcac uzyc wskaznika
rob * wierzcholek
 z funkcji mam blad:

a jesli tak sie nie da z tym argumentem wskaznika to napiszcie czy cos

C:\... |30|error: invalid use of 'rob::lewy_wezel'|
 
C:\... |31|error: invalid use of 'rob::prawy_wezel'|
 
C/C++
//element roboczy, wierzcholek drzewa binarnego
typedef struct rob {
    int max_obciazenie;
    int obciazenie;
    int l_lisci_w_l_poddrzewie;
    typedef struct rob * lewy_wezel, * prawy_wezel;
} WEZEL;



void buduj_drzewo( int poczatek, int koniec, rob * wierzcholek ) {
   
    if( koniec - poczatek > 1 ) {
        int mid = poczatek + koniec;
        WEZEL * nowy_lewy = new WEZEL;
        nowy_lewy->max_obciazenie = 0;
        nowy_lewy->obciazenie = 0;
       
        WEZEL * nowy_prawy = new WEZEL;
        nowy_prawy->max_obciazenie = 0;
        nowy_prawy->obciazenie = 0;
       
        wierzcholek->lewy_wezel = nowy_lewy;
        wierzcholek->prawy_wezel = nowy_prawy;
       
       
        //dalej kolejne wywolania buduj drzewo dla nowych dwoch wierzchokow
       
    }
}
P-136900
pekfos
» 2015-08-26 20:50:02
C/C++
typedef struct rob * lewy_wezel, * prawy_wezel;
Wywal ten typedef.

A najlepiej zrób to po prostu w C++.
P-136901
heroarthur
Temat założony przez niniejszego użytkownika
robie w c++
» 2015-08-26 20:53:01
ten typedef to w ksiazce widzialem ze do listy jednokierunkowej byl uzyty, chcialem przekazujac ten argument do funkcji zrobic drzewo nie wykorzystujac tablicy i zaleznosci ze ojciej*2 + 1 to prawy syn itd  i to jest caly czas c++, ale go wywalilem i skompilowal,  dzieki w kazdym razie
P-136902
pekfos
» 2015-08-26 20:57:01
i to jest caly czas c++
To widać, choć nie tak wyraźnie, jak powinien wyglądać kod C++.

ten typedef to w ksiazce widzialem
Albo to książka do C, albo słaba do C++.
P-136904
Szymon2727
» 2015-08-26 21:03:18
Typdef służy do skracania nazw - bardzo przydatne narzędzie, gdy napiszemy coś długiego np. zmienna, czy metoda i chcemy ją wykorzystać:
http://4programmers.net/C/Typedef

Tutaj nie wiem co robisz, chyba chcesz przypisać wskaźnik, ale nie nadałeś im nazwy :)
P-136906
« 1 »
  Strona 1 z 1