15 marca 2010

kapelusz magika w programowaniu

Programuje konwersje ciagu na drzewo. Bezposrednio do tablicy nie zadzialalo. Na standardowe drzewo (obiekt i wezly na podrzewa wg Sedgewicka) maja piekny efekt uboczny.
operator przypisania wykorzystuje nastepujaca funkcje:
[cope=cpp]
int Tree :: mul(Node ** ten, const Node * h) {
*ten = new Node(h->item);
if(h->f1) mul( &( ( *ten )->f1 ), h->f1 );
else (*ten)->f1 =0;
if(h->f2) mul( &((*ten)->f2), h->f2 );
else (*ten)->f2=0;
return 0;
}
[\code]
I teraz zmienna Tree ten ustawiam, odkladam na stos, kasuje by dostarczyc nowe wezly, a pozniej ze stosu zdejmuje: nowa wartosc. Innymi slowy - na stos klade krolika, a zdejmuje wrobla.
Nawet bez magicznego kapelusza!