ALG1

ALG1



5.6. Drzewa i ich reprezentacje 151

Jak łatwo zauważyć, w zależności od sposobu przechadzania się po drzewie możemy w różny sposób przedstawić jego zawartość bez wykonywania jakiejkolwiek zmiany w strukturze samego drzewa!

Reprezentacja wyrażeń arytmetycznych byłaby z pewnością niekompletna, gdybyśmy jej nie uzupełnili funkcjami do obliczania ich wartości. Zanim jednak cokolwiek zechcemy obliczać, musimy dysponować funkcją, która sprawdzi, czy wyrażenie znajdujące się w drzewie jest prawidłowo skonstruowane, tzn. czy przykładowo nie zawiera nieznanego nam operatora arytmetycznego.

Zauważmy, że o poprawności drzewa decyduje już sam sposób jego konstruowania z użyciem stosu. Pomimo lego ułatwienia dysponowanie dodatkową funkcją spraw dzającą poprawność drzewa jest jednak mało kosztowne - dosłownie kilka linijek kodu - a użyteczność takiej dodatkowej funkcji jest oczywista

int poprawne ; struct wyrażenie *w)

(

// czy wyrażenie jest poprawne składniowo? if(w->op=='0')

return 1; // OK, wg naszej konwencji jest to liczba switch(w->op!

case

1 +

case

case

' *

case

case

*/

// to sa znane operatory


return (poprawne(w->lewy)‘poprawne(w->prawy)); default :

return (0);    //błąd!!! -> operator nieznany

)

Nie będę nikogo zachęcał do zrealizowania powyższych funkcji w formie itera-cyjnej - jest to oczywiście wykonalne, ale rezultat nie należy do specjalnie czytelnych i eleganckich.

Przejdźmy wreszcie do prezentacji funkcji, która zajmie się obliczeniem wartości wyrażenia arytmetycznego. Jego schemat jest bardzo zbliżony do tego zastosowanego w funkcji poprawne:

double oblicz(struct wyrażenie *w)

(

if(poprawne(w)) // wyrażenie poprawne? if(w->op=='0 *)

return (w >val); // pojedyncza wartość else

switch (w->op)

I

case '+1:


Wyszukiwarka

Podobne podstrony:
ALG5 5.6. Drzewa i ich reprezentacje 145 sposobu korzystania z takiej reprezentacji. Otóż, dowolne
ALG7 5.6. Drzewa i ich reprezentacje 147 Numery znajdujące się przy węzłach mają charakter wyłączni
ALG9 5.6. Drzewa i ich reprezentacje 149 stwierdzeniem, że z punktu widzenia komputera ON P jest is
dolnicki sam ter9 Jak łatwo zauważyć, podatkowi od środków transportowych podlegają wyłącznie takie
dolnicki sam ter9 Jak łatwo zauważyć, podatkowi od środków transportowych podlegaj;) wyłącznie taki
ALG6 156 Rozdział 5. Struktury danya Proces przechadzania się po drzewie nie jest bynajmniej zakońc
Jak łatwo zauważyć metody te różnią się wagami jakie przypisuje się metodom majątkowym (czyli różnią
Obraz4 (171) 8    Wprowadzenie. Wieczne niedopoznanie urojona”, która, jak łatwo zau
wstęp do teorii polityki img 114 122 Jak łatwo zauważyć, koncepcje Mitrany’ego są bardzo blisko zwią
Gennep Obrz?dy przej?cia2 Jak łatwo zauważyć, rytuafy inicjacji pojawiająca się w iraterącfj sktc
2. Inne warunki brzegowe Jak łatwo zauważyć, postać linii ugięcia dla wyboczenia pojedynczego pręta
się jednostka radarowa. Jak łatwo zauważyć takie zastosowania technologii radarowe dosyć dobrze
053 (9) Bryty obrotowejRozwiązanie: Dane: a = 12 cm b = 6 cmSzukane: V, Ph V=V, + V2h, + h2 = AC Jak
Obraz0023 I ■10 d u =■ I) - p v    (4.19) • Jak łatwo zauważyć. każde ze znamion inte

więcej podobnych podstron