3. Η στοίβα (stack) και η ουρά (queue), είναι
από τις πιο σπουδαίες δομές δεδομένων στον
προγραμματισμό εφαρμογών.
Στο περιβάλλον της «ΓΛΩΣΣΑΣ», υλοποιούνται
με πίνακες, οι οποίοι γεμίζουν και
προσπελαύνονται με συγκεκριμένη χρήση των
δεικτών στα στοιχεία.
Χρησιμοποιούνται σε εφαρμογές, όπως:
διαχείριση ουράς σε ταμεία, λιμάνια, αποθήκες
προϊόντων, συνεργεία αυτοκινήτων ή άλλες
ουρές αναμονής, εσωτερικά στο λειτουργικό
σύστημα, σε παιχνίδια, αναδρομικές κλήσεις
συναρτήσεων/διαδικασιών κλπ.
4. Είναι ένας μονοδιάστατος πίνακας, που τον
σκεφτόμαστε σαν μια πραγματική στοίβα
πραγμάτων, το ένα επάνω στο άλλο, όπως
μια στοίβα με πιάτα.
Κορυφή, είναι μια μεταβλητή που αποθηκεύει
τη θέση του επάνω στοιχείου της στοίβας
(δηλ. του πιο πρόσφατα τοποθετημένου).
Η μέθοδος προσπέλασης στα στοιχεία,
ονομάζεται L.I.F.O. (Last In First Out), δηλ. αυτό
που τοποθετήσαμε τελευταίο, είναι το πρώτο
που θα εξάγουμε προς χρήση.
5. Ωθούμε (push) ένα νέο στοιχείο στη στοίβα,
εισάγοντάς το πάντα στην κορυφή,
προσέχοντας να υπάρχει διαθέσιμη θέση
(αλλιώς έχουμε υπερχείλιση - overflow). Πριν
την εισαγωγή, αυξάνουμε την κορυφή κατά
1.
Απωθούμε (pop) ένα στοιχείο προς χρήση,
εξάγοντάς το πάντα από την κορυφή,
προσέχοντας να υπάρχει ένα τουλάχιστον
(αλλιώς έχουμε υποχείλιση - underflow).
Μετά μειώνουμε την κορυφή κατά 1.
7. ΠΡΟΣΟΧΗ
Η διαδικασία της ώθησης πρέπει
οπωσδήποτε να ελέγχει, αν η στοίβα
είναι γεμάτη, οπότε λέγεται ότι
συμβαίνει υπερχείλιση της στοίβας.
Αντίστοιχα, η διαδικασία απώθησης
ελέγχει, αν υπάρχει ένα τουλάχιστον
στοιχείο στη στοίβα, δηλαδή ελέγχει
αν γίνεται υποχείλιση της στοίβας.
9. Είναι επίσης ένας μονοδιάστατος πίνακας
Χρειάζονται δύο δείκτες (μεταβλητές) ορίων
της ουράς
Για την αρχή (front)
Για το τέλος (rear) της ουράς
Η μέθοδος προσπέλασης στα στοιχεία,
ονομάζεται F.I.F.O. (First In First Out), δηλ.
όποιο στοιχείο εισάγεται πρώτο στην ουρά,
εξάγεται (εξυπηρετείται) και πρώτο
10. Όπως και σε μια συνηθισμένη ουρά αναμονής, οι
λειτουργίες είναι :
Η εισαγωγή (enqueue) στοιχείου πάντα στο
τέλος της ουράς, προσέχοντας να υπάρχει
διαθέσιμη θέση. Πριν την εισαγωγή, αυξάνουμε
την rear. Αν φτάσουμε στο τέλος, τα
μεταφέρουμε όλα προς την αρχή ώστε να
αδειάσει χώρος στο τέλος
Η εξαγωγή (dequeue) στοιχείου πάντα από την
αρχή της ουράς, προσέχοντας να υπάρχει
διαθέσιμο στοιχείο. Μετά, αυξάνουμε την front
12. ΠΡΟΣΟΧΗ
Σε κάθε περίπτωση όμως, πρέπει
να ελέγχεται πριν από
οποιαδήποτε ενέργεια, αν υπάρχει
ελεύθερος χώρος στον πίνακα
για την εισαγωγή και αν υπάρχει
ένα τουλάχιστον στοιχείο για την
εξαγωγή