ΤΕΙ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΕΡΡΕΣ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. Πτυχιακή εργασία Μάρθα Τσολακίδου
Δομή δεδομένων FIFO – Πρώτη εισαγωγή πρώτη εξαγωγή. Υλοποίηση με πίνακα/λίστα. Δείκτες front(αρχή) και rear(τέλος). Λειτουργίες enqueue (εισαγωγή) r=+1και dequeue(εξαγωγή) f=+1. Εφαρμογή: web servers, εκτυπωτές, multitasking Λ.Σ.
Δομή δεδομένων LIFO Τελευταία εισαγωγή πρώτη εξαγωγή. Υλοποίηση με πίνακα/λίστα. Δείκτης Top. Λειτουργίες push(ώθηση) top=+1 και pop(απώθηση) top=-1. overflow(υπερχείλιση) και underflow(υποχείλιση). Eφαρμογή: undo, back κομπί πλοηγητών..
makeEmpty : δημιουργία κενής ουράς isEmpty(): επιστρέφει λογική τιμή αν η ουρά είναι άδεια f==r. Enqueue(): Εισαγωγή στο τέλος ουράς, r+1 Dequeue(): Εξαγωγή από αρχή ουράς, f+1 Top(): Επιστρέφει το στοιχείο στη θέση front Size(): Επιστρέφει f-r+1.
makeEmpty(S): Δημιουργεί κενή στοίβα isEmpty(S): Επιστρέφει λογική τιμή αν η στοίβα είναι άδεια Push(newEntry): Ωθεί στοιχείο στη στοίβα, top+1 Pop(): Απωθεί στοιχείο από κορυφή στοίβας, top- 1 Top(): επιστρέφει τιμή κορυφής, δεν απωθεί size(): Επιστρέφει πλήθος στοιχείων στοίβας.
a.Εισαγωγή b.Εισαγωγή c.Εισαγωγή d.Εισαγωγή e.Εισαγωγή f.Εξαγωγή g.Εξαγωγή
Ενθεματικές εκφράσεις Τελεστές εμφανίζονται ανάμεσα σε τελεσταίους a + b Προθεματικές εκφράσεις Τελεστές εμφανίζονται πριν σε τελεσταίους + a b Μεταθεματικές εκφράσεις Τελεστές εμφανίζονται μετά από τους τελεσταίους a b + Δεν υπάρχει ανάγκη από παρενθέσεις
Infix : a + b * c Postfix: a b c * +
Infix : a – b + c Postfix : a b – c +
1. Αρχικοποίησε μία κενή στοίβα τελεστών 2. Όσο είναι σωστή και δε βρίσκεσαι στο τέλος της έκφρασης επανέλαβε α. Πάρε τον επόμενο χαρακτήρα στην ενθεματική β. Επίλεξε χαρακτήρα Περίπτωση αριστερή παρένθεση Εισαγωγή του χαρακτήρα στη στοίβα Περίπτωση δεξιά παρένθεση Διέγραψε και εμφάνισε στοιχεία στοίβας, μέχρι πρώτη διαγραφή μίας αριστερής παρένθεσης, χωρίς να την εμφανίσεις. Περίπτωση τελεστή Αν στοίβα κενή ή προτεραιότητα τελεστή μεγαλύτερη από στοιχείο κορυφής τότε Εισαγωγή χαρακτήρα στη στοίβα Αλλιώς Διαγραφή και εμφάνιση στοιχείου κορυφής Τέλος αν Επανέλαβε την σύγκριση χαρακτήρα με νέο στοιχείο κορυφής Περίπτωση τελεστέος Εμφάνισε τον Τέλος επιλογών Τέλος επανάληψης 3. Όταν φτάσεις στο τέλος αριθμητικής έκφρασης, διαγραφή και εμφάνιση στοιχείων στοίβας μέχρι να αδειάσει. Infix : (5+3)*2/4-2 Postfix : 53+2*4/2- InputStackOutput (( 5(5 +( )53+ ** 2*53+2 /*/53+2* 4/53+2*4 -/-53+2*4/ *4/ *4/2-
1. Αρχικοποίησε μία κενή στοίβα τελεστών 2. Όσο είναι σωστή και δε βρίσκεσαι στο τέλος της έκφρασης α. Αν το στοιχείο είναι τελεστής Τότε Εισαγωγή σε μία στοίβα όρων β. Αν το στοιχείο είναι τελεστής τότε Εξάγονται (Pop)διαδοχικά δύο τελεσταίοι από την κορυφή στοίβας Εκτελείται η πράξη που δηλώνει ο τελεστής Αποτέλεσμα τοποθετείται στη στοίβα (push) 3. Όταν φτάσεις στο τέλος της αριθμητικής έκφρασης, διέγραψε και εμφάνισε στοιχεία στοίβας μέχρι να αδειάσει. InputStackOutput *8 2 * /16 4 / Postfix : 53+2*4/2- Result : 2