ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 3ο: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΜΕΡΟΣ 3o: ΣΤΟΙΒΑ & ΟΥΡΑ 12/04/2017 Καθηγητής: Δρίμτζιας Βασίλης
Καθηγητής: Δρίμτζιας Βασίλης ΣΤΟΙΒΑ Μια στοίβα δεδομένων, μοιάζει με οποιαδήποτε άλλη στοίβα αντικειμένων στον πραγματικό κόσμο Μπορούμε να τοποθετήσουμε ή να αφαιρέσουμε αντικείμενα μόνο από την κορυφή της στοίβας Το τελευταίο αντικείμενο που τοποθετείται στη στοίβα εξάγεται πρώτο, και το πρώτο αντικείμενο που τοποθετήθηκε στη στοίβα, μπορεί να εξαχθεί αφού πρώτα εξαχθούν όλα τα προηγούμενα Τελευταίο μέσα, πρώτο έξω (LIFO – Last In, First Out) 12/04/2017 Καθηγητής: Δρίμτζιας Βασίλης
Καθηγητής: Δρίμτζιας Βασίλης ΛΕΙΤΟΥΡΓΙΕΣ ΣΤΟΙΒΑΣ Ώθηση (push) στοιχείου στην κορυφή της στοίβας Απώθηση (pop) στοιχείου από την κορυφή της στοίβας 12/04/2017 Καθηγητής: Δρίμτζιας Βασίλης
Καθηγητής: Δρίμτζιας Βασίλης ΕΛΕΓΧΟΣ ΛΕΙΤΟΥΡΓΙΩΝ Η λειτουργία της ώθησης, πρέπει οπωσδήποτε να ελέγχει εάν η στοίβα είναι γεμάτη, οπότε συμβαίνει υπερχείλιση (overflow) της στοίβας Αντίστοιχα, η λειτουργία της απώθησης, πρέπει να ελέγχει αν υπάρχει τουλάχιστον ένα στοιχείο στη στοίβα, γιατί εάν η στοίβα είναι άδεια τότε συμβαίνει υποχείλιση (underflow) της στοίβας 12/04/2017 Καθηγητής: Δρίμτζιας Βασίλης
ΥΛΟΠΟΙΗΣΗ ΣΤΟΙΒΑΣ ΜΕ ΠΙΝΑΚΕΣ Η υλοποίηση μιας στοίβας με πίνακα είναι πολύ απλή Χρήση ενός μονοδιάστατου πίνακα μεγέθους ν (το μέγιστο δυνατό μέγεθος στοίβας) Χρειαζόμαστε μια επιπλέον μεταβλητή (Top), η οποία θα μας δείχνει τη θέση του πίνακα στην οποία βρίσκεται η κορυφή της στοίβας (το τελευταίο στοιχείο δηλαδή) Για να εξαχθεί ένα στοιχείο (απώθηση): Εξάγουμε το στοιχείο Stack[Top] Top Top - 1 Για να εισαχθεί στοιχείο (ώθηση): Top Top +1 Τοποθετούμε το νέο στοιχείο στη θέση Stack[Top] ΠΡΟΣΟΧΗ ΣΤΟΝ ΕΛΕΓΧΟ ΕΆΝ ΜΠΟΡΟΥΝ ΝΑ ΕΚΤΕΛΕΣΤΟΥΝ ΟΙ ΛΕΙΤΟΥΡΓΙΕΣ!!! 12/04/2017 Καθηγητής: Δρίμτζιας Βασίλης
Καθηγητής: Δρίμτζιας Βασίλης ΟΥΡΑ Ανάλογα με τη στοίβα, η ουρά δεδομένων, είναι μια ουρά αναμονής αντίστοιχη με οποιαδήποτε άλλη πραγματική ουρά (π.χ. ουρά σε ταμείο τράπεζας) Η σειρά εξόδου από την ουρά (η σειρά εξυπηρέτησης δηλαδή) είναι η σειρά με την οποία μπήκαν στην ουρά, δηλαδή το πρώτο αντικείμενο που μπήκε στην ουρά θα βγει πρώτο, και το τελευταίο θα βγει μετά από όλα τα προηγούμενα Πρώτο μέσα, πρώτο έξω (First In, First Out – FIFO) 12/04/2017 Καθηγητής: Δρίμτζιας Βασίλης
Καθηγητής: Δρίμτζιας Βασίλης ΛΕΙΤΟΥΡΓΙΕΣ ΟΥΡΑΣ Εισαγωγή (enqueue) στοιχείου στο πίσω άκρο της ουράς Εξαγωγή (dequeue) στοιχείου από το εμπρός άκρο της ουράς 12/04/2017 Καθηγητής: Δρίμτζιας Βασίλης
ΥΛΟΠΟΙΗΣΗ ΟΥΡΑΣ ΜΕ ΠΙΝΑΚΕΣ Υλοποιείται με ένα μονοδιάστατο πίνακα Απαιτούνται δύο δείκτες για την υλοποίηση της ουράς: Ένας δείκτης να δείχνει το πρώτο στοιχείο προς εξαγωγή (front) Ένας δείκτης να δείχνει το τελευταίο στοιχείο, το οποίο μόλις εισήλθε στην ουρά(back) Κατά την εξαγωγή του στοιχείου: εξάγεται το στοιχείο Q[front] front front + 1 Κατά την εισαγωγή στοιχείου: rear rear +1, εισάγουμε το στοιχείο στη θέση Q[rear] 12/04/2017 Καθηγητής: Δρίμτζιας Βασίλης