ΠΛΗ111. Ανοιξη Μάθηµα 4 ο. Στοίβα. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Σχετικά έγγραφα
ΠΛΗ111. Ανοιξη Μάθηµα 5 ο. Ουρά. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη

Δομές Δεδομένων και Αλγόριθμοι

Συλλογές, Στοίβες και Ουρές

Δομές Δεδομένων Ενότητα 3

ΠΛΗ111. Ανοιξη Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Στοίβες με Δυναμική Δέσμευση Μνήμης

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1

ιαφάνειες παρουσίασης #6 (α)

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

ΠΛΗ111. Ανοιξη Μάθηµα 10 ο. Γράφοι. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Προγραμματισμός Ι. Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

ΣΤΟΙΒΕΣ (stacks) Σχήµα: Λειτουργία Στοίβας

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

υναµικές οµές εδοµένων

Επανάληψη για τις Τελικές εξετάσεις

Δομές Δεδομένων (Data Structures)

Βασικές οµές εδοµένων

Βασικές Δομές Δεδομένων

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

υναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή

ΠΛΗ111. Ανοιξη Μάθηµα 8 ο. Αναζήτηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

ΠΛΗ111. Ανοιξη Μάθηµα 2 ο. Αλγόριθµοι και Αφηρηµένοι Τύποι εδοµένων. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Διδάσκων: Παναγιώτης Ανδρέου

Βασικές Έννοιες Δοµών Δεδοµένων

ΕΠΛ232: Εργαστήριο 2

Δομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Σύνοψη Προηγούμενου (2/2) Σημερινό Μάθημα. Πίνακες. Εισαγωγή, σε χρόνο O(1).

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

Δομές Δεδομένων & Αλγόριθμοι. Στοίβες. Εργαστήριο Γνώσης & Ευφυούς Πληροφορικής 1

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Διάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

Σημειώσεις όγδοης εβδομάδας

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα:

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες

ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

Δοµές Δεδοµένων. 7η Διάλεξη Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

ιαφάνειες παρουσίασης #5 (β)

Εισαγωγή στον Προγραμματισμό

ΛΙΣΤΕΣ. Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα. Εφαρμογές και Χρήση Λιστών

Η γλώσσα προγραμματισμού C Συνδεδεμένες Λίστες

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

Να εκτυπωθούν οι πρώτες Ν σειρές του τριγώνου, χρησιµοποιώντας ένα πίνακα µεγέθους Ν στοιχείων (η Ν-οστή σειρά περιέχει Ν στοιχεία).

IsEmptyList(L): επιστρέφει true αν L = < >, false

Η στοίβα (stack) H στοίβα είναι ένας αποθηκευτικός χώρος οργανωµένος κατά τέτοιο τρόπο ώστε να υποστηρίζει δύο βασικές λειτουργίες:

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out)

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2

Προγραμματισμός Υπολογιστών με C++

Στοίβες. ΟΑΤ της Στοίβας. Περιγραφή και Υλικό Ανάγνωσης. Αφηρηµένοι Τύποι εδοµένων (AΤ )

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out)

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Χρήσεις Στοίβας ΣΤΟΙΒΑ. Ορισμός Στοίβας (stack) Βασική Λειτουργικότητα

Αναδρομικοί Αλγόριθμοι

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής

Διάλεξη 9: Αφηρημένοι Τύποι Δεδομένων. Διδάσκων: Παναγιώτης Ανδρέου

ΠΛΗ111. Ανοιξη Μάθηµα 9 ο. Ταξινόµηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Κεφάλαιο 2.5: Τύποι εδοµένων, Τελεστές και Αριθµητικές Εκφράσεις. ( ιαλέξεις 5-6) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

POINTERS, AGGREGATION, COMPOSITION

Δομές Δεδομένων. Ενότητα 3: Ουρές Εισαγωγή-Υλοποίηση ΑΤΔ Ουρά με πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή

Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες)

ιαφάνειες παρουσίασης #11

Ενότητα 2 Στοίβες Ουρές - Λίστες. ΗΥ240 - Παναγιώτα Φατούρου 1

Στοίβες Ουρές - Λίστες

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

Δομές Δεδομένων & Αλγόριθμοι

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 10: Δομές Δεδομένων Ι (Στοίβες & Ουρές)

Φροντιστήριο 4 Σκελετοί Λύσεων

Φροντιστήριο 4 Σκελετοί Λύσεων

ΠΛΗ111. Ανοιξη Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Εισαγωγή στον Προγραμματισμό

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

Δομές Δεδομένων. Ενότητα 12: Κατακερματισμός: Χειρισμός Συγκρούσεων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

Transcript:

ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 4 ο Στοίβα Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Ανασκόπηση Αφηρηµένος Τύπος εδοµένων Στοίβα Υλοποίηση µε Πίνακα Υλοποίηση µε Συνδεδεµένη Λίστα Εφαρµογές Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 2

Αφηρηµένος Τύπος εδοµένων Στοίβα Συλλογή στοιχείων σε γραµµική διάταξη Επιτρέπει εισαγωγή και διαγραφή στο ένα µόνο άκρο της διάταξης, το οποίο ονοµάζουµε κορυφή LIFO (Last In First Out) Παραδείγµατα: στοίβα πιάτων, κερµατοθήκη Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 3

Βασικές Πράξεις Στοίβας create() : δηµιουργεί κενή στοίβα empty() : ελέγχει αν η στοίβα είναι κενή top() : επιστρέφει το στοιχείο της κορυφής push() : εισάγει στοιχείο στην κορυφή pop() : αφαιρεί/επιστρέφει το κορυφαίο στοιχείο κορυφή C B A Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 4

Υλοποίηση Στοίβας µε Πίνακα #define N /* µέγεθος πίνακα */ typedef struct { int stack[n]; int top; /* κορυφή στοίβας */ } stack_t, *stackptr_t; stack_t stack; void create(stackptr_t stackptr) { stackptr->top = -1; /* αρχικά άδεια */ } stack[n-1] stack[4] stack[3] stack[2] stack[1] stack[0] top #define empty(stack) ((stack).top == -1) Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 5

Push µε Πίνακα σε Χρόνο Ο(1) stack[n-1] /* όρισµα δείκτη σε stack για αλλαγή στοιχείου */ void push(stackptr_t stackptr, int x) { if (stackptr->top == N-1) printf( stack full\n ); else stackptr->stack[++(stackptr->top)] = x; } stack[4] stack[3] stack[2] stack[1] stack[0] top Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 6

Pop µε Πίνακα σε Χρόνο Ο(1) stack[n-1] /* όρισµα δείκτη σε stack για αλλαγή κορυφής */ int pop(stackptr_t stackptr) { if (stackptr->top == -1) printf( empty stack\n ); else return stackptr->stack[(stackptr->top)--]; } stack[4] stack[3] stack[2] stack[1] stack[0] top Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 7

Υλοποίηση Στοίβας µε Λίστα typedef struct item { int data; struct item *next; } item_t, *itemptr_t; itemptr_t top; void create(itemptr_t *topptr) { } *topptr = NULL; top topptr #define empty(top) (top == NULL) Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 8

Push µε Συνδεδεµένη Λίστα void push(itemptr_t *topptr, int x) { itemptr *newitem = (itemptr_t) malloc(sizeof(item_t)); topptr top newitem x } newitem->data = x; newitem->next = *topptr; *topptr = newitem; Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 9

Pop µε Συνδεδεµένη Λίστα int pop(itemptr_t *topptr) { } if (*topptr == NULL) printf( empty stack ); else { itemptr_t olditem = *topptr; int x = olditem->data; *topptr = (*topptr)->next; free(olditem); return x; } topptr top olditem x Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 10

Αριθµητικές Εκφράσεις Ενδοθεµατική αριθµητική (infix) Οι τελεστές (+,-,*,/) τοποθετούνται µεταξύ των όρων Σειρά εκτέλεσης από αριστερά προς τα δεξιά Προτεραιότητα πράξεων 1. Παρενθέσεις 2. Πολλαπλασιασµός/ ιαίρεση 3. Πρόσθεση/Αφαίρεση Παράδειγµα: (32 (7 + 5)) * (22 + 3 * 4) * - + 32 + 22 * 7 5 3 4 Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 11

Εναλλακτικές Αριθµητικές Εκφράσεις Μεταθεµατική αριθµητική (postfix) Οι τελεστές (+,-,*,/) τοποθετούνται µετά τους όρους ε χρειάζεται προτεραιότητα ή παρενθέσεις Παράδειγµα: 32 7 5 + - 22 3 4 * + * ισοδυναµεί µε: ((32 (7 5 +) -) (22 (3 4 *) +) *) Προθεµατική αριθµητική (prefix) Οι τελεστές (+,-,*,/) τοποθετούνται πριν τους όρους ε χρειάζεται προτεραιότητα ή παρενθέσεις Παράδειγµα: * - 32 + 7 5 + 22 * 3 4 ισοδυναµεί µε: (* (- 32 (+ 7 5)) (+ 22 (* 3 4))) Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 12

Παράδειγµα Μετατροπή Infix σε Postfix 7 5 * 3 + 4 => 7 5 3 * - 4 + Ιδέες ιαβάζουµε την infix έκφραση από αριστερά προς τα δεξιά Αν το επόµενο σύµβολο ακέραιος µεταφέρεται στην έξοδο Πρέπει όµως να τυπώσουµε και τους τελεστές στη σωστή σειρά τηρώντας την προτεραιότητά τους Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 13

Παράδειγµα Μετατροπής Infix σε Postfix 7 5 * 3 + 4 => 7 5 3 * - 4 + Σύµβολο Στοίβα Τελεστών Έξοδος 7 άδεια 7 - - 7 5-7 5 * * - 7 5 3 * - 7 5 3 + + 7 5 3 * - 4 + 7 5 3 * - 4 7 5 3 * - 4 + Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 14

Αλγόριθµος Μετατροπής Infix σε Postfix while not end of expression read token if token is operand output token if token is operator if (empty(stack)) push(token) else /* σύµβολα χαµηλής προτεραιότητας */ while ( not empty(stack) and (precedence of token <= precedence of top(stack)) ) output pop(stack) push(token) while (not empty(stack)) output pop(stack) Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 15

ιαχείριση Παρενθέσεων Παράδειγµα (6 * (7 3 * 2) 7) * 2 => 6 7 3 2 * - * 7 2 * Ιδέες Σηµειώνουµε την αρχή µιας υποέκφρασης εισάγοντας ( στη στοίβα Συνεχίζουµε κανονικά τον υπολογισµό µέχρι να βρούµε ) Όταν βρούµε ) στην έκφραση εξάγουµε τους τελεστές της στοίβας µέχρι το πιο πρόσφατο ( Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 16

ιαχείριση Παρενθέσεων (6 * (7 3 * 2) 7) * 2 => 6 7 3 2 * - * 7 2 * Έκφραση Στοίβα Έξοδος ( ( 6 ( 6 * * ( 6 ( ( * ( 6 7 ( * ( 6 7 - - ( * ( 6 7 3 - ( * ( 6 7 3 * * - ( * ( 6 7 3 2 * - ( * ( 6 7 3 2 ) * ( 6 7 3 2 * - - - ( 6 7 3 2 * - * 7 - ( 6 7 3 2 * - * 7 ) άδεια 6 7 3 2 * - * 7 - * * 6 7 3 2 * - * 7-2 * 6 7 3 2 * - * 7-2 άδεια 6 7 3 2 * - * 7-2 * Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 17

Αλγόριθµος Μετατροπής µε Παρενθέσεις while not end of expression read token if token is operand output token if token is ( /* αρχή υποέκφρασης */ push(token, stack) if token is ) /* τέλος υποέκφρασης */ while (top(stack) <> ( ) output pop(stack) pop(stack) /* pop token ( */ if token is operator while (not empty(stack) and precedence of token <= precedence of top(stack) and top(stack) <> ( ) /* σύµβολα χαµηλής προτεραιότητας */ output pop(stack) push(token) while (not empty(stack)) /* εναποµείνοντα σύµβολα */ output pop(stack) Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 18

Υπολογισµός Μεταθεµατικής Έκφρασης Ιδέες Γενικά κάνουµε υπολογισµούς όταν βρίσκουµε δύο ακεραίους που ακολουθούνται από τελεστή Eισάγουµε κάθε ακέραιο που βρίσκουµε σε στοίβα Κάθε φορά που συναντούµε τελεστή Εξάγουµε τους τελευταίους δύο ακεραίους από τη στοίβα Εκτελούµε την πράξη του τελεστή Εισάγουµε το αποτέλεσµα της πράξης στη στοίβα Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 19

Παράδειγµα Υπολογισµού 6 7 3 2 * - * 7 2 * => -2 Στοίβα Εισόδου Στοίβα Όρων 6 7 3 2 * - * 7 2 * 7 3 2 * - * 7 2 * 6 3 2 * - * 7 2 * 7 6 2 * - * 7 2 * 3 7 6 * - * 7 2 * 2 3 7 6 - * 7 2 * 6 7 6 * 7 2 * 1 6 7-2 * 6-2 * 7 6 2 * -1 * 2-1 άδεια -2 Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 20

Αλγόριθµος Μεταθεµατικού Υπολογισµού while (not empty(stack)) /* στοίβα εισόδου */ arithtoken = pop(stack) if (arithtoken is operand) push(arithtoken, temp) /* στοίβα ορισµάτων */ else operand2 = pop(temp) /* εκτέλεση πράξης */ operand1 = pop(temp) result = apply arithtoken to operands 1 & 2 push(result, temp) Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 21