ALG8

ALG8



148 Rozdział 5. Struktury danych

148 Rozdział 5. Struktury danych

nadchodzące" elementy:

I    2


+


7 etc.


Etapy tworzenia tlrzeuti hinarnof>o (zawartość stosu):


Rys. 5 - 24.

Tworzenie drzewa binarnego wyrażenia arytmetycznego.

Typowe wyrażenie arytmetyczne, zapisane w powszechnie używanej postaci (zwanej po polsku wrostkową), da się również przedstawić w tzw. Odwrotnej Notacji Polskiej (ONP. postfiksowej). Zamiast pisać aopb używamy formy: a b op . Mówiąc krótko: operator występuje po swoich argumentach. Operacja arytmetyczna jest łatwa do odtworzenia w postaci klasycznej, jeśli wiemy, ile operandów wymaga dany operator.

Analiza wyrażenia beznawiasowego odbywa się w następujący sposób:

•    Czytamy argumenty znak po znaku, odkładając jc na stos.

•    W momencie pojawienia się jakiegoś operatora ze stosu zdejmowana jest odpowiednia dlań liczba argumentów - wynik operacji kładziony jest na stos jako kolejny argument.

Na rysunku 5-24 możemy zaobserwować opisany wyżej proces w bardziej poglądowej formie niż powyższy suchy opis. Pierwsze dwa argumenty, 1 i 2, jako nie będące operatorami, są odkładane na stos (w programie odpowiadać to będzie stworzeniu dwóch komórek pamięci, których pola wskaźnikowe lewy i prawy są zainicjowane wartościami NULL). Trzecim elementem, który przybywa z „zewnątrz”, jest operator t. Tworzona jest nowa komórka pamięci, jednocześnie sam fakt nadejścia operatora prowokuje zdjęcie ze stosu dwóch argumentów, którymi są komórki zawierające liczby / i 2. Te komórki są „doczepiane” do pól wskaźnikowych komórki zawierającej operator +. Kolejnym nadchodzącym elementem jest znowu liczba (7) —jest ona odkładana na stos i proces może być kontynuowany dalej...

W opisany wyżej sposób pracują kompilatory w momencie obliczania wyrażeń za pośrednictwem stosu. Jedyną różnicą jest to, że nie są odkładane na stos kolejne poddrzewa. ale już obliczone fragmenty dowolnie w zasadzie skomplikowanych wyrażeń arytmetycznych. Czytelnik zgodzi się chyba ze


Wyszukiwarka

Podobne podstrony:
ALG 8 98 Rozdział 5. Struktury danych W następnych paragrafach zostaną przedstawione wszystkie metod
ALG8 108__Rozdział 5. Struktury danych5.1.3.Listy jednokierunkowe - teoria i rzeczywistość Oprócz p
ALG8 118 Rozdział 5. Struktury danych if(pŁzed==NULL) // wstawiamy na początek listy ( inf_ptr[nr].
ALG8 138 Rozdział 5. Struktury danych • „prawy” potomek /-tego węzła jest „schowany” pod indeksem 2
ALG8 128 Rozdział 5. Struktury dam i W zależności od konkretnych potrzeb można element /> fizycz
ALG8 158 Rozdział 5. Struktury{ if (p->t[rio_indeksu{słowo[i])]==NULL) test=0; // bidk odgałęzie
ALG8 18 Rozdziali. Zanim wystartujemy dopóki a>0 wykonuj; podstaw za c resztę z dzielenia a prze
ALG8 48 Rozdział 2. Rekurencja W celu dokładniejszego przeanalizowania algorytmu posłużymy się kilk
ALG8 68 Rozdział 3. Analiza sprawności algorytmów3.6. Nowe zadanie: uprościć obliczenia! Nic sposób
ALG8 78___Rozdział 3 Analiza sprawności algorytmówZad. 3-4 Proszę rozwiązać następujące równanie
ALG8 88 Rozdział 4. Algorytmy sortowania Jest chyba dość oczywiste, że wywołania rekurencyjne zatrz
ALG8 168 Rozdział 6. Derekursywacjł Jak odróżnić powrót z procedury P, który powoduje definitywne j
ALG8 178 Rozdział 6. Derekursywacja 6.! Dużą wadą nowej techniki będzie niemożność łatwego jej
ALG8 198 Rozdział 7. Algorytmy przeszukiwania pod indeks ///, stwierdzimy, że już wcześniej ktoś si
ET8 148 Rozdział 9. Jakość usług turystycznych 4.    Bezpieczeństwo - fizyczne i dys
ALG 4 94 Rozdział 5. Struktury danych5.1. Listy jednokierunkowe Lista jednokierunkowa jest oszczędną
ALG 6 96 Rozdział 5. Struktury danych Rys. 5 - 3. FCOOh FCI4h FFEEh Przykład listy jedno-kierunk
ALG2 102___Rozdział 5. Struktury danych I ELEMENT *q=inf.głowa; if (pusta()) cout << "(l

więcej podobnych podstron