Bardzo dziękuję za te cenne porady! Jak najbardziej zgadzam się z propozycjami!!
adf88 napisał(a)
rabston napisał(a)
Twezel *wezel = new Twezel;
To się nie skompiluje. Zmienna wezel
już istnieje. Powinieneś użyć podanej referencji zamiast tworzyć nową zmienną lokalną.
void dodaj_wezel(Twezel*& wezel, Tdane* dane)
{
if(wezel == NULL)
{
Twezel* nw = new Twezel;
nw->alb = dane->alb;
nw->gr = dane->gr;
nw->im = dane->im;
nw->naz = dane->naz;
nw->pkt = dane->pkt;
nw->lewy = NULL;
nw->prawy = NULL;
wezel = nw;
}
else if(dane->alb < wezel->alb) dodaj(wezel->lewy, dane);
else if(dane->alb > wezel->alb) dodaj(wezel->prawy, dane);
}
tak o to uczyniłem
rabston napisał(a)
if(head->next->nr_albumu < wezel->nr_albumu)
dodaj_wezel(wezel->lewy, head->next);
else
if(head->next->nr_albumu > wezel->nr_albumu)
A co, gdy head->next->nr_albumu == wezel->nr_albumu
? Zamień <
na <=
lub zamień >
na >=
.</quote>
co do tego, czy "head->next->nr_albumu" nie moze byc równy "wezel->nr_albumu" chciałbym dodać, że po 1)zakladamy unikalnosc numeru albumu 2) i tak cały rekord z takim wlasnie nrem albumu musiałby zostać pominięty, ze względu na metodę dodawania kolejnych elementów do drzewa BST[nowo dodawana mniejsza wartość na lewego syna,wieksza na prawo,a taka sama nie moze zostac dodana]
rabston napisał(a)
dodaj_wezel(wezel->lewy, head->next);
dlaczego przechodzisz do kolejnego elementu listy podczas przeszukiwania drzewa? Powinieneś po prostu wywołać dodaj_wezel
dla każdego elementu listy:
for (item = head; item != NULL; item = item->next) dodaj_wezel(korzen, item);
</quote>
racja, racja, świetny pomysł - też to dodałem.
I Śmiga jak złotoD stokrotne dzięki.
Ten pomysł z zapisem w inny sposób też jest bardzo ciekawy +zmiana argumentu z glowy listy na konkretną wartość..a wywoływane z maina dla każdego elementu listy.. nie wpadłbym na to za nic. Teraz jeszcze tylko pobawię się, tak, żeby ta PROCEDURA nie była wywoływana z maina, tylko zeby samowywołująca się rekurencyjna Funkcja, to mi pomoże lepiej zrozumieć inne możliwości robienia tego samego.
Bardzo dziękuję jeszcze raz i pozdrawiam!!