ΚΕΦ.3 και 9 ΠΙΝΑΚΕΣ ΣΤΟΙΒΑ ΚΑΙ ΟΥΡΑ - ΘΕΩΡΙΑ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
ΕΠΙΜΕΛΕΙΑ:
ΜΑΡΙΑ Σ. ΖΙΩΓΑ
ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΘΕΩΡΙΑ
3ΟΥ και 9ΟΥ ΚΕΦΑΛΑΙΟΥ
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΙΝΑΚΩΝ ΣΤΟΙΒΑΣ ΚΑΙ ΟΥΡΑΣ
Α ΜΕΡΟΣ
ΘΕΩΡΙΑ ΓΙΑ ΠΙΝΑΚΕΣ
3.1
Να δοθεί ο ορισμός του όρου «δεδομένα» ;
Δεδομένα αποτελούν οποιαδήποτε στοιχεία μπορούν να εξαχθούν από τη διατύπωση του προβλήματος και η
επιλογή τους εξαρτάται από τον τύπο του προβλήματος.
Για παράδειγμα, σε ένα σχολείο χρήσιμα δεδομένα αποτελούν το ονοματεπώνυμο, η ηλικία, το φύλο, η τάξη, το
τμήμα, οι βαθμοί των μαθητών, ενώ το βάρος και το ύψος δεν θεωρούνται χρήσιμα δεδομένα για το αρχείο του
σχολείου. Αντίθετα σε ένα γυμναστήριο το ύψος και το βάρος είναι σημαντικά δεδομένα.
Η συλλογή των αρχικών ακατέργαστων δεδομένων ενός προβλήματος και η επεξεργασία τους παράγει ως
αποτέλεσμα την πληροφορία.
3.2
Ποιο είναι το αντικείμενο μελέτης της θεωρίας πληροφοριών ;
Η θεωρία πληροφοριών αποτελεί επιστημονικό πεδίο της πληροφορικής που μελετά:
1. Τη μέτρηση της πληροφορίας.
2. Την κωδικοποίηση της πληροφορίας.
3. Τη μετάδοση της πληροφορίας.
.
.
3.3
Από ποιες σκοπιές μελετούνται τα δεδομένα στην πληροφορική ;
Στην πληροφορική τα δεδομένα μελετούνται από τις ακόλουθες σκοπιές.
1. Υλικού. Το υλικό αναφέρεται στον υπολογιστή στον οποίο αποθηκεύονται, με διάφορους τρόπους
κωδικοποίησης, τα δεδομένα ενός προγράμματος. Μερικές μορφές κωδικοποίησης είναι ο κώδικάς ASCII,
ο κώδικάς EBCDIC, κτλ
2. Γλωσσών προγραμματισμού. Οι γλώσσες προγραμματισμού υψηλού επιπέδου επιτρέπουν τη χρήση
διάφορων τύπων μεταβλητών για την φύλαξη των δεδομένων. Ο μεταφραστής κάθε γλώσσας φροντίζει για
την αποδοτικότερη μορφή αποθήκευσης, κάθε μεταβλητής στον υπολογιστή.
3. Δομών Δεδομένων. Δομή δεδομένων είναι ένα σύνολο δεδομένων μαζί με ένα σύνολο επιτρεπτών
λειτουργιών σε αυτά. Για παράδειγμα, μια δομή δεδομένων είναι ο πίνακας στον οποίο μπορούμε να
αποθηκεύουμε πολλά δεδομένα (αριθμούς, λέξεις). Επιτρεπτές λειτουργίες σε έναν πίνακα είναι η εισαγωγή
και η εύρεση στοιχείου.
4. Ανάλυσης Δεδομένων. Γίνεται μελέτη του τρόπου καταγραφής και των δεδομένων για να αναπαρασταθούν
σωστά τα πραγματικά γεγονότα. Οι τεχνολογίες των Βάσεων Δεδομένων, της Μοντελοποίησης Δεδομένων
και την Αναπαράστασης Γνώσης ανήκουν σε αυτή τη σκοπιά μελέτης των δεδομένων.
3.4
;
Να δοθεί ο ορισμός της «Δομής Δεδομένων» Ποιες είναι οι βασικές λειτουργίες επί των δομών δεδομένων
Μια δομή δεδομένων είναι ένα σύνολο υποθηκευμένων δεδομένων στον υπολογιστή τα οποία μπορούν να
επεξεργαστούν μαζικά από ένα σύνολο λειτουργιών.
Ουσιαστικά πρόκειται για μια μεταβλητή η οποία, αντίθετα με τις μεταβ.-χρησιμοποιήσαμε στα προηγούμενα
κεφάλαια, μπορεί να έχει την ίδια χρονική στιγμή πολλές τιμές.
Κάθε δομή δεδομένων αποτελείται από ένα σύνολο κόμβων (nodes) ή διαφορετικά θέσεων στις οποίες
αποθηκεύονται διαφορετικές τιμές.
Οι βασικές λειτουργίες ή πράξεις επί των δομών δεδομένων είναι οι ακόλουθες :
1. Προσπέλαση σε ένα κόμβο για να εξετασθεί ή να τροποποιηθεί το περιεχόμενο
2. Εισαγωγή νέων κόμβων σε μία δομή δεδομένων.
3. Διαγραφή ενός κόμβου από μία δομή δεδομένων.
4. Αναζήτηση στους κόμβους μιας δομής δεδομένων, προκειμένου να εντοπιστεί ένας ή περισσότεροι
που έχουν μια συγκεκριμένη ιδιότητα.
5. Ταξινόμηση, όπου οι κόμβοι μιας δομής δεδομένων διατάσσονται κατά αύξουσα ή φθίνουσα σειρά.
6. Αντιγραφή, κατά την οποία όλοι ή μερικοί από τους κόμβους μίας δομής δεδομένων αντιγράφονται
σε μία άλλη δομή δεδομένων.
7. Συγχώνευση, όπου δύο ή περισσότερες δομές δεδομένων συνενώνονται σε μία ενιαία δομή.
8. Διαχωρισμός, όπου μια δομή δεδομένων διαχωρίζεται σε δυο ή περισσότερες δομές δεδομένων.
3.5
Χρησιμοποιούνται και οι οκτώ λειτουργίες σε κάθε δομή δεδομένων ;
Σπάνια χρησιμοποιούνται και οι οκτώ λειτουργίες σε κάποια δομή δεδομένων. Συνήθως μία δομή δεδομένων
είναι αποδοτικότερη από μία άλλη δομή δεδομένων με κριτήριο κάποια λειτουργία, για παράδειγμα την
αναζήτηση, αλλά λιγότερο αποδοτική για κάποια άλλη λειτουργία, για παράδειγμα την εισαγωγή.
3.6
Ποια εξίσωση διατύπωσε ο Worth δημιουργός της γλώσσας προγραμματισμού Pascal, το 1976;
Ο Wirth διατύπωσε το 1976 την εξής εξίσωση:
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Η εξίσωση αυτή σημαίνει ότι για τη δημιουργία ενός προγράμματος πρέπει να ανακαλύψουμε τα δεδομένα, να
τα δομήσουμε σε δομές δεδομένων και να τα επεξεργαστούμε με κάποιον αλγόριθμο.
3.7
Ποιες κατηγορίες δομών δεδομένων υπάρχουν και ποια τα χαρακτηριστικά τους ;
Υπάρχουν δυο κατηγορίες δομών δεδομένων:
Στατικές
1. Το ακριβές μέγεθος της απαιτούμενης μνήμης, δηλ. το πλήθος των κόμβων, καθορίζεται κατά τη
στιγμή της δημιουργίας της δομής δεδομένων και παραμένει σταθερό.
2. Τα στοιχεία αποθηκεύονται σε συνεχόμενες θέσεις μνήμης.
Δυναμικές
1. Τα στοιχεία δεν αποθηκεύονται σε συνεχόμενες θέσεις
2. Στηρίζονται στην τεχνική της δυναμικής παραχώρησης μνήμης δηλ. οι δυναμικές δομές δεν έχουν
σταθερό μέγεθος, αλλά ο αριθμός των κόμβων τους αυξομειώνεται καθώς στη δομή εισάγονται νέα
δεδομένα ή διαγράφονται κάποια δεδομένα.
Οι στατικές δομές δεδομένων είναι πιο εύκολες στην υλοποίησή τους, αλλά περιορίζουν τις δυνατότητες ενός
προγράμματος, γιατί μπορούν να διαχειριστούν σταθερό αριθμό δεδομένων. Οι δυναμικές δομές δεδομένων
μπορούν να διαχειριστούν μεταβλητό αριθμό δεδομένων, αλλά είναι πιο δύσκολες στην διαχείριση τους στο
πρόγραμμα.
3.8
Πως υλοποιούνται στην πράξη οι στατικές δομές δεδομένων;
Στην πράξη, οι στατικές δομές υλοποιούνται με πίνακες. Ένας πίνακας είναι μία δομή δεδομένων που περιέχει
στοιχεία του ίδιου τύπου, δηλ. ακέραιους ή πραγματικούς ή λογικές τιμές ή αλφαριθμητικές τιμές.
Ένας πίνακας είναι συνήθως μονοδιάστατος, αλλά στη γενικότερη περίπτωση μπορεί να είναι ένας
δισδιάστατος, τρισδιάστος και γενικά ν-διάστατος.
3.9
Να γίνει περιγραφή του μονοδιάστατου πίνακα ;
Ένας μονοδιάστατος πίνακας είναι ουσιαστικά μια μεταβλητή, στην οποίο κάθε χρονική στιγμή είναι
αποθηκεμένες πολλές τιμές. Οι τιμές αυτές είναι διατεταγμένες δηλ. υπάρχει μια σειρά, και καθεμία έχει έναν
μοναδικό δείκτη που καθαρίζει τη θέση του στοιχείου στον πίνακα.
Μπορούμε να αναπαραστήσουμε γραφικά έναν μονοδιάστατο πίνακα είτε οριζόντια είτε κάθετα, ως μια
ακολουθία αριθμών ή αλφαριθμητικών ή λογικών τιμών Σχηματικά ένας μονοδιάστατος πίνακας 5 θέσεων είναι:
ΟΝΟΜΑ ΠΙΝΑΚΑ Α
ΤΙΜΗ 1
ΤΙΜΗ-2
ΤΙΜΗ-3
ΤΙΜΗ-4
ΤΙΜΗ-5
Η
Η
Η
Η
1
2
3
4
5Η
Ο πίνακας ονομάζεται Α και έχει πέντε θέσεις. Σε κάθε θέση του πίνακα να υπάρχει μια διαφορετική τιμή. Οι
δείκτες κάτω από τις τιμές προσδιορίζουν απλά τον αριθμό της θέσης.
Για να αναφερθούμε σε ένα στοιχείο του πίνακα, χρησιμοποιούμε το όνομά του και τη θέση του στοιχείου μέσα
σε αγκύλες. Έτσι το πρώτο στοιχείο του πίνακα είναι το Α[1], το δεύτερο είναι το Α[2], το τρίτο είναι το Α[3]
κ.ο.κ.
Τα στοιχεία Α[1], Α[2], ..., Α[5] του πίνακα Α αντιπροσωπεύουν τις τιμές που υπάρχουν στις αντίστοιχες θέσεις
του πίνακα και μπορούμε να τις χειριστούμε ως απλές μεταβλητές.
Για παράδειγμα στον ακόλουθο πίνακα το στοιχείο Α[1] έχει τιμή 4, ενώ το Α[5] έχει τιμή 6.
Α
4
-2
0
10
6
Για να εμφανίσουμε την τιμή που υπάρχει, για παράδειγμα, στη θέση 1 του πίνακα αρκεί να εκτελέσουμε την
εντολή Εμφάνισε Α[1], ενώ για να εκχωρήσουμε την τιμή 15 στην ίδια θέση πρέπει να εκτελέσουμε την εντολή
Α[1]  15.
3.10 Τι γνωρίζεται για της μορφές δεδομένων δευτερεύουσας μνήμης ;
Σε μεγάλες πρακτικές εφαρμογές το μέγεθος της κυρίας μνήμης RAM δεν επαρκεί για τα δεδομένα. Έτσι
χρησιμοποιούνται ειδικές δομές που ονομάζονται αρχεία και αποθηκεύονται στον μαγνητικό δίσκο. Τα αρχεία
έχουν τα εξής χαρακτηριστικά και διαφορές με τις δομές (π.χ. τον πίνακα) της κυρίας μνήμης:
 Στα αρχεία τα δεδομένα δεν χάνονται όταν σβήσει ο υπολογιστής, ενώ στις δομές δεδομένων κύριας μνήμης
χάνονται με το τέλος του αλγορίθμου.
 Τα στοιχεία ενός αρχείου ονομάζονται εγγραφές. Κάθε εγγραφή αποτελείται από ένα ή περισσότερα πεδία
που περιγράφουν τα χαρακτηριστικά της εγγραφής. Π.χ. η εγγραφή ενός μαθητή περιέχει τα πεδία: Μητρώο,
Ονοματεπώνυμο, Τάξη, Τμήμα.
 Ένα πεδίο ταυτοποιεί (προσδιορίζει μοναδικά) την εγγραφή και ονομάζεται πρωτεύον κλειδί ή απλά κλειδί.
Κάποια άλλα πεδία μπορεί να χρησιμοποιηθούν ως δευτερεύοντα κλειδιά.
 Η αναζήτηση μιας εγγραφής με βάση την τιμή του πρωτεύοντος ή δευτερεύοντος κλειδιού αποτελεί
ερευνητικό θέμα αρκετά σημαντικό και ενδιαφέρον.
3.11 Να γίνει περιγραφή του δυσδιάστατου πίνακα ;
Ένας δυσδιάστατος πίνακας είναι ουσιαστικά μια μεταβλητή, στην οποία κάθε ο;; στιγμή είναι αποθηκεμένες
πολλές τιμές. Οι τιμές αυτές είναι διατεταγμένες. διαστάσεις, οριζοντίος και καθέτως, σε γραμμές και στήλες
αντίστοιχα.
Σχηματικά ένας δυσδιάστατος πίνακας 3 γραμμών και 5 στηλών είναι:
1
2
3
TIMH-1
TIMH-6
TIMH-11
1
ΠΙΝΑΚΑΣ Α
TIMH-2
TIMH-3
TIMH-7
TIMH-8
TIMH-12 TIMH-13
2
3
TIMH-4
TIMH-9
TIMH-14
4
TIMH-5
TIMH-10
TIMH-15
5
Ο πίνακας ονομάζεται Α και μπορούν να αποθηκευτούν συνολικά 15 τιμές, όσες δηλ το γινόμενο των γραμμών
επί τις στήλες (3x5). Όπως αντιλαμβανόμαστε από τους δείκτες στο τέλος και στα αριστερά του πίνακα, η θέση
ενός στοιχείου προσδιορίζεται από τον αριθμό της γραμμής και τον αριθμό της στήλης του πίνακα. Έτσι η τιμή
9 βρίσκεται στη θέση 2, 4.
Για να αναφερθούμε σε ένα στοιχείο του πίνακα, χρησιμοποιούμε το όνομά του και τη θέση του στοιχείου μέσα
σε αγκύλες. Έτσι το πρώτο στοιχείο του πίνακα είναι το Α[1,1], το δεύτερο είναι το Α[1,2], ενώ το τελευταίο
στοιχείο του πίνακα είναι το Α[3,5]
Όπως στους μονοδιάστατους πίνακες έτσι και στους δισδιάστατους, τα στοιχεία των πινάκων πρέπει να είναι του
ίδιου τύπου και τα μεμονωμένα στοιχεία του μπορούμε να τα χειρίστούμε ως απλές μεταβλητές.
Ένας πίνακας που έχει 3 γραμμές και 5 στήλες αναφέρεται και ως πίνακας 3x5 και έχει συνολικά 15 στοιχεία.
Στη γενική περίπτωση ένας πίνακας Ν γραμμών και Μ στηλών αναφέρεται ως πίνακας ΝxΜ και έχει ΝxΜ
στοιχεία.
Β ΜΕΡΟΣ
ΘΕΩΡΙΑ ΓΙΑ ΣΤΟΙΒΕΣ ΚΑΙ ΟΥΡΕΣ
3.12 Να γίνει περιγραφή της δομής δεδομένων Στοίβα ;
Στη δομή δεδομένων στοίβα τα δεδομένα στοιβάζονται το ένα πάνω στο άλλο, όπως για παράδειγμα μια στοίβα
από πιάτα. Σχηματικά οι λειτουργίες μια δομής δεδομένων στοίβας μπορούν να αναπαρασταθούν ως εξής:
Α
Β
Γ
Δ
Ε
ΣΤ
13
106
106
Α. Η
106
στοίβα είναι κενή, δεν περιέχει στοιχεία.
Β. Έγινε
-2
ώθηση (εισαγωγή) στην κορυφή της στοίβας του στοιχείου 106.
Γ. Έγινε
13
ώθηση του στοιχείου 13, το οποίο πλέον βρίσκεται στην κορυφή της στοίβας.
Δ. Έγινε
106
ώθηση του στοιχείου -2.
Ε. Έγινε
στοιχείο
απώθηση (εξαγωγή) του στοιχείου -2. Στην κορυφή της στοίβας βρίσκεται πλέον το
13.
ΣΤ.
Έγινε απώθηση του στοιχείου -2. Στην κορυφή της στοίβας απομένει το στοιχείο 106.
3.13 Ποιες
13
106
είναι οι λειτουργίες σε μία Στοίβα ;
Οι λειτουργίες σε μια στοίβα είναι η:
1. Ώθηση (push) στοιχείου στην κορυφή μιας στοίβας.
Στη διαδικασία της ώθησης πρέπει να ελέγχεται, αν η στοίβα είναι γεμάτη, οπότε λέγεται ότι συμβαίνει
υπερχείλιση (overflow) της στοίβας.
2. Απώθηση (Ρορ) στοιχείου από την κορυφή της στοίβας.
Στη διαδικασία απώθησης ελέγχει, αν υπάρχει ένα τουλάχιστον στοιχείο στη στοίβα, δηλαδή ελέγχει αν
γίνεται υποχείλιση (underflow) της στοίβας.
3.14 Πως μπορεί να γίνει υλοποίηση της Στοίβας με χρήση μονοδιάστατου πίνακα ;
Στους αλγορίθμους μπορούμε να χρησιμοποιήσουμε έναν μονοδιάστατο πίνακα για να προσομοιώσουμε τις
λειτουργίες μιας στοίβας.
Όπως παρατηρούμε στο σχήμα, χρησιμοποιούμε έναν πίνακα Ν θέσεων και μια
μεταβλητή Τορ η οποία δείχνει το στοιχείο που τοποθετήθηκε τελευταίο στην
κορυφή της στοίβας.
25
100
9
 Για την ώθηση ενός νέου στοιχείου στη στοίβα, αυξάνουμε τη μεταβλητή Τορ
κατά 1 και τοποθετούμε το στοιχείο στη θέση που δείχνει η μεταβλητή Τορ.
 Για την απώθηση στοιχείου από τη στοίβα, εξέρχεται το στοιχείο που δείχνει η
μεταβλητή Τορ και στη συνέχεια η Τορ μειώνεται κατά 1 για να δείχνει τη νέα
κορυφή.
Πριν από τις δυο ενέργειες, πρέπει να γίνεται έλεγχος αν υπάρχει ελεύθερος χώρος στον πίνακα για να μπορεί
να γίνει ώθηση και αν υπάρχει τουλάχιστον ένα στοιχείο για να γίνει η λειτουργία της απώθησης.
3.15 Να γίνει περιγραφή της δομής δεδομένων Ούρα ;
Στη δομή δεδομένων ουρά τα δεδομένα παρατάσσονται το ένα πίσω από το άλλο, σχηματίζοντας μια ουρά, όπως
για παράδειγμα μια ουρά πελατών σε μια τράπεζα. Σχηματικά οι λειτουργίες μια δομής δεδομένων ουράς
μπορούν να αναπαρασταθούν ως εξής:
Α
Β
100
100
25
Γ
Δ
100
25
0
Ε
25
0
ΣΤ
0
Α. Η ουρά είναι κενή, δεν περιέχει στοιχεία.
Β. Έγινε εισαγωγή στην πρώτη κενή θέση της ουράς του στοιχείου 100.
Γ. Έγινε εισαγωγή στο τέλος της ουράς του στοιχείου 25.
Δ. Έγινε εισαγωγή του Ο στο τέλος της ουράς.
Ε. Έγινε εξαγωγή από την αρχή της ουράς του 100. Στην αρχή της ουράς βρίσκεται πλέον το στοιχείο 25.
ΣΤ. Έγινε εξαγωγή του στοιχείου 25. Το επόμενο στοιχείο για εξαγωγή είναι το 0.
3.16 Ποιες είναι οι λειτουργίες σε μία Ουρά ;
Οι λειτουργίες σε μια ουρά είναι η:
1. Εισαγωγή (enqueue) στοιχείου στο πίσω άκρο της ουράς.
2. Εξαγωγή (dequeue) στοιχείου από το εμπρός άκρο της ουράς.
3.17 Πως μπορεί να γίνει υλοποίηση της ουράς με χρήση μονοδιάστατου πίνακα ;
Στους αλγορίθμους μπορούμε να χρησιμοποιήσουμε έναν μονοδιάστατο πίνακα για να προσομοιώσουμε τις
λειτουργίες μιας ουράς.
1
10
34
Εμπρός
2
-2
3
..……
N-1
N
Πίσω
Όπως παρατηρούμε από το σχήμα, χρησιμοποιούμε έναν πίνακα Ν θέσεων και δυο μεταβλητές Εμπρός και Πίσω
οι οποίες δείχνουν, αντίστοιχα, στην αρχή και στο τέλος της ουράς.
 Για την εισαγωγή ενός νέου στοιχείου στην ουρά αυξάνεται ο δείκτης Πίσω κατά 1 και το στοιχείο
αποθηκεύεται εκεί που δείχνει πλέον ο δείκτης.

Για την εξαγωγή ενός στοιχείου από την ουρά, εξέρχεται το στοιχείο που δείχνει ο δείκτης Εμπρός, ο
οποίος στη συνέχεια αυξάνεται κατά 1, για να δείχνει το επόμενο στοιχείο που πρόκειται να εξαχθεί.
Πριν από οποιαδήποτε ενέργεια, πρέπει να γίνεται έλεγχος αν υπάρχει ελεύθερος χώρος στον πίνακα για την
εισαγωγή και αν υπάρχει τουλάχιστον ένα στοιχείο για εξαγωγή.
ΑΛΓΟΡΙΘΜΟΣ ΩΘΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΜΙΑ ΣΤΟΙΒΑ
Αλγόριθμος Ώθηση_Στοίβα
Δεδομένα //top , item //
Αν top < size τότε
top  top+1
stack[top]  item
done  Αληθής
Στην συνέχεια δίνονται οι αλγόριθμοι ώθηση (push) και απώθηση
(top) από στοίβα. Χρησιμοποιείτε μία λογική μεταβλητή, η σημαία done,
που δηλώνει την επιτυχή εκτέλεση της διαδικασίας. Επίσης η μεταβλητή
top δηλώνει την επάνω θέση της στοίβας που είναι κατειλημμένη από
κάποιο στοιχείο. Τα δεδομένα είναι αποθηκευμένα σε ένα μονοδιάστατο
Αλλιώς
done  Ψευδής
Τέλος_Αν
Αποτέλεσμα // top, done //
Τέλος Ώθηση_Στοίβα
πίνακα που ονομάζονται stack και έχει μέγεθος size. H μεταβλητή item
χρησιμεύει για την αποθήκευση του στοιχείου που εισάγεται ή εξάγεται.
ΑΛΓΟΡΙΘΜΟΣ ΑΠΩΘΗΣΗ ΣΤΟΙΧΕΙΟΥ ΑΠΟ ΜΙΑ ΣΤΟΙΒΑ
Αλγόριθμος Απώθηση_Στοίβα
Δεδομένα //top //
Αν top < =1 τότε
item  stack[top]
top  top - 1
done  Αληθής
Αλλιώς
done  Ψευδής
Τέλος_Αν
Αποτέλεσμα // item, top, done //
Τέλος Απώθηση_Στοίβα
ΑΛΓΟΡΙΘΜΟΣ ΕΙΣΑΓΩΓΗΣ ΣΤΟΙΧΕΙΟΥ ΣΕ ΜΙΑ ΟΥΡΑ
Αλγόριθμος Εισαγωγή_Σε_Ουρά
Δεδομένα //rear, item //
Οι αλγόριθμοι εισαγωγής και εξαγωγής από ουρά δίνονται στην συνέχεια.
Αν rear < size τότε
Χρησιμοποιείται μία λογική μεταβλητή, η σημαία done, που δηλώνει την
rear  rear+1
επιτυχή εκτέλεση της διαδικασίας. Επίσης οι μεταβλητές rear and front
queue[rear]  item δηλώνουν τους δύο δείκτες που δείχνουν αντίστοιχα την τελευταία θέση και
done  Αληθής
την πρώτη θέση της ουράς, που είναι ένας πίνακας queue μεγέθους size. H
Αλλιώς
μεταβλητή item χρησιμεύει για την αποθήκευση του στοιχείου που
done  Ψευδής
εισάγεται ή εξάγεται.
Τέλος_Αν
Αποτέλεσμα // rear, done //
Τέλος Εισαγωγή_Σε_Ουρά
ΑΛΓΟΡΙΘΜΟΣ ΕΞΑΓΩΓΗ ΣΤΟΙΧΕΙΟΥ ΑΠΟ ΜΙΑ ΟΥΡΑ
Αλγόριθμος Εξαγωγή_Απο_Ουρά
Δεδομένα //rear, item //
Αν rear <= front τότε
front  front+1
item  queue[front]
done  Αληθής
Αλλιώς
done  Ψευδής
Τέλος_Αν
Αποτέλεσμα // item, rear, done //
Tέλος Εξαγωγή_Απο_Ουρά
Γ ΜΕΡΟΣ
ΘΕΩΡΙΑ ΓΙΑ ΑΝΑΖΗΤΗΣΗ ΚΑΙ ΤΑΞΙΝΟΜΗΣΗ
3.18 Να εξηγηθεί η σειριακή αναζήτηση ;
Η λειτουργία της αναζήτησης σε πίνακα είναι η εύρεση της θέσης στην οποία υπάρχει μια συγκεκριμένη τιμή
που ενδιαφέρει τον χρήστη. Οι πιο γνωστές μέθοδοι αναζήτησης είναι η σειριακή και η δυαδική. Η σειριακή
μέθοδος αναζήτησης είναι αρκετά απλή στην υλοποίηση, αλλά όχι τόσο αποδοτική, ενώ η δυαδική είναι πιο
αποδοτική, αλλά απαιτεί ο πίνακας να είναι ταξινομημένος.
2
Για να εξηγήσουμε τη σειριακή αναζήτηση σε μονοδιάστατο πίνακα, ας υποθέσουμε ότι έχουμε τον ακόλουθο
πίνακα 1 Ο στοιχείων και έστω ότι θέλουμε να βρούμε τη θέση του πίνακα που υπάρχει η τιμή 100.
3
5
-1
100
2
2
30
Τα βήματα του αλγόριθμου της σειριακής αναζήτησης είναι:
1. Βήμα: Επισκεπτόμαστε το πρώτο στοιχείο του πίνακα.
2. Βήμα: Ελέγχουμε αν το στοιχείο του πίνακα ισούται με 100. Αν ισούται πάμε στο 4ο βήμα, αλλιώς στο 3ο
βήμα.
3. Βήμα: Υπάρχουν ακόμη στοιχεία στον πίνακα; Αν ναι τότε επισκεπτόμαστε το επόμενο στοιχείο του πίνακα
και πάμε στο 2ο βήμα. Αν δεν υπάρχουν στοιχεία για έλεγχο η εκτέλεση του αλγορίθμου πηγαίνει στο 5ο
βήμα.
4. Βήμα: Η τιμή που αναζητούσαμε βρέθηκε και ο αλγόριθμος τερματίζει εμφανίζοντας τη θέση που βρέθηκε
το στοιχείο.
5. Βήμα: Ο αλγόριθμος τερματίζει, γιατί εξετάσαμε όλα τα στοιχεία του πίνακα και η τιμή που αναζητούσαμε
δεν βρέθηκε.
Είναι προφανές ότι το όνομα της σειριακής μεθόδου αναζήτησης προκύπτει από τον τρόπο λειτουργίας της. Δηλ.
από το γεγονός ότι τα στοιχεία του πίνακα ελέγχονται ένα προς ένα με τη σειρά μέχρι είτε να βρεθεί το στοιχείο
που ζητάμε είτε να ελεγχθούν όλα τα στοιχεία του πίνακα.
Η περίπτωση της αναζήτησης του 100 είναι απλή, γιατί η τιμή 100 υπάρχει μόνο μια φορά στον πίνακα. Τι γίνεται
όμως στην περίπτωση που αναζητήσουμε το 2; Ποια θέση θα εμφανίσουμε στο χρήστη, τη 2η, την 6η ή την 7η;
Η μέθοδος λοιπόν της σειριακής αναζήτησης μπορεί να χωριστεί σε 3 περιπτώσεις:
1. Εμφάνιση όλων των θέσεων που βρίσκεται το στοιχείο που αναζητούμε
2. Εμφάνιση της πρώτης θέσης που βρίσκεται το στοιχείο που αναζητούμε
3. Εμφάνιση της τελευταίας θέσης που βρίσκεται το στοιχείο που αναζητούμε
Εμφάνιση όλων των θέσεων
Ο αλγόριθμος που εμφανίζει όλες τις θέσεις που υπάρχει το στοιχείο που αναζητούμε σε έναν πίνακα, είναι η
πιο εύκολη περίπτωση. Μέσα σε μια επανάληψη από 1 ως το πλήθος των στοιχείων του μονοδιάστατου πίνακα,
συγκρίνουμε ένα προς ένα τα στοιχεία του πίνακα με το προς αναζήτηση στοιχείο. Ελέγχουμε δηλ. αν το στοιχείο
που επεξεργαζόμαστε είναι ίσο με αυτό που αναζητούμε. Αν αυτό συμβαίνει, τότε εμφανίζουμε τη θέση του
στοιχείου και πηγαίνουμε στο επόμενο. Αν το στοιχείο που επεξεργαζόμαστε δεν είναι ίσο με αυτό που
αναζητούμε, απλά πηγαίνουμε στο επόμενο.
Επίσης χρησιμοποιούμε μια βοηθητική λογική μεταβλητή, στην οποία θέτουμε την τιμή Ψευδής πριν την
επανάληψη. Αν κατά τον έλεγχο βρεθεί το στοιχείο που αναζητούμε, τότε εκχωρούμε στη λογική μεταβλητή την
τιμή Αληθής. Έτσι, αν στο τέλος της επανάληψης η λογική μεταβλητή είναι Αληθής, σημαίνει ότι βρέθηκε η
τιμή που αναζητούμε στον πίνακα. Αν η λογική μεταβλητή είναι Ψευδής, η τιμή που αναζητούμε δεν βρέθηκε.
Ο αλγόριθμος της εμφάνισης όλων των θέσεων που υπάρχει ένα στοιχείο που αναζητούμε είναι:
Αλγόριθμος Σειριακή- Αναζήτηση- Εμφάνιση Όλων
Δεδομένα // Ν, Π, Χ // ! Ν: διάσταση πίνακα, Π: πίνακας, χ: τιμή αναζήτησης
βρέθηκε  Ψευδής
Για ί από 1 μέχρι Ν
Αν Π[i] = Χ τότε
Εμφάνισε 'Ή τιμή βρέθηκε στη θέση", i
βρέθηκε  Αληθής
Τέλος-αν
Τέλος-επανάληψης
Αν βρέθηκε = Ψευδής τότε
Εμφάνισε 'Ή τιμή δεν βρέθηκε στον πίνακα"
Τέλος-αν
Τέλος Σειριακή- Αναζήτηση- Εμφάνιση Όλων
Εμφάνιση της πρώτης θέσης
Στην περίπτωση αυτή πρέπει να τροποποιήσουμε τον προηγούμενο αλγόριθμο, ώστε να τερματίζει, όταν βρεθεί
για πρώτη φορά το στοιχείο που αναζητούμε. Επειδή η τιμή που αναζητούμε μπορεί να υπάρχει σε οποιαδήποτε
θέση του πίνακα, ή μπορεί να μην υπάρχει καν στον πίνακα, δεν γνωρίζουμε εκ των προτέρων πόσα στοιχεία
του πίνακα πρέπει να ελεγχθούν. Ή διαφορετικά δεν γνωρίζουμε από την αρχή του αλγορίθμου πόσες
επαναλήψεις θα κάνουμε.
Συνεπώς, πρέπει να χρησιμοποιήσουμε δομή επανάληψης Όσο.......επανάλαβε. Η επανάληψη θα τερματίζει είτε
όταν βρέθηκε η τιμή που αναζητούμε, δηλ. όταν η λογική μεταβλητή γίνει Αληθής, είτε όταν φθάσουμε στο
τέλος του πίνακα.
Ο αλγόριθμος της εμφάνισης της πρώτης θέσης που υπάρχει ένα στοιχείο που αναζητούμε είναι:
Αλγόριθμος Σειριακή- Αναζήτηση- Πρώτη Εμφάνιση
Δεδομένα / / Ν, Π, Χ / / ! Ν: διάσταση πίνακα, Π: πίνακας, χ: τιμή αναζήτησης
βρέθηκε  Ψευδής
i 1
Όσο i < = Ν και βρέθηκε = Ψευδής επανάλαβε
Αν Π[i] = Χ τότε
Εμφάνισε 'Ή τιμή βρέθηκε στη θέση ", i
βρέθηκε  Αληθής
Τέλος-αν
i  i+1
Τέλος-επανάληψης
Αν βρέθηκε = Ψευδής τότε
Εμφάνισε 'Ή τιμή δεν βρέθηκε στον πίνακα"
Τέλος-αν
Τέλος Σειριακή- Αναζήτηση- Πρώτη-Εμφάνιση
Εμφάνιση της τελευταίας θέσης
Στην περίπτωση αυτή πρέπει να επισκεφτούμε όλα τα στοιχεία του πίνακα, μέχρι και το τελευταίο, για να
βεβαιωθούμε ότι θα βρούμε την τελευταία θέση που υπάρχει η τιμή. Κάθε φορά που θα βρίσκουμε την τιμή που
ψάχνουμε στον πίνακα, θα την εκχωρούμε σε μια μεταβλητή που κρατά τη θέση που βρέθηκε η τιμή.
Για παράδειγμα, αν βρούμε την τιμή στη θέση 1 του πίνακα, θα εκχωρήσουμε στην μεταβλητή της θέσης την
τιμή 1. Αν στη συνέχεια των επαναλήψεων βρούμε την τιμή στη θέση 15, τότε θα εκχωρήσουμε στη μεταβλητή
που κρατά τη θέση την τιμή 15. Ακολουθώντας αυτή την τακτική, στο τέλος του αλγορίθμου η βοηθητική
μεταβλητή θα έχει την τελευταία θέση όπου βρήκαμε την τιμή. Στο τέλος της επανάληψης θα εμφανίσουμε την
θέση.
Ο αλγόριθμος λοιπόν της περίπτωσης αυτής είναι:
Αλγόριθμος Σειριακή- Αναζήτηση- Τελευταία-Εμφάνιση
Δεδομένα / / Ν, Π, Χ / / ! Ν: διάσταση πίνακα, Π: πίνακας, χ: τιμή αναζήτησης
βρέθηκε  Ψευδής
Για i από 1 μέχρι Ν
Αν Π[i] = Χ τότε
θέση  ί
βρέθηκε  Αληθής
Τέλος-αν
Τέλος-επανάληψης
Αν βρέθηκε = Ψευδής τότε
Εμφάνισε 'Ή τιμή δεν βρέθηκε στον πίνακα"
Αλλιώς
Εμφάνισε 'Ή τιμή βρέθηκε στον πίνακα ", θέση
Τέλος-αν
Τέλος Σειριακή- Αναζήτηση- Τελευταία-Εμφάνιση
3.19 Πότε δικαιολογείται η χρήση της σειριακής μεθόδου αναζήτησης ;
Η χρήση της σειριακής αναζήτησης δικαιολογείται όταν
1. Ο πίνακας είναι μη ταξινομημένος
2. Ο πίνακας είναι μικρού μεγέθους
3. Η αναζήτηση στον πίνακα γίνεται σπάνια
3.20 Να δοθεί ο ορισμός της ταξινόμησης Ν στοιχείων a1, α2, ..., αN
Η ταξινόμηση των στοιχείων αι, α2, ..., αΝ συνίσταται στη μετάθεση της θέσης των στοιχείων, ώστε να
τοποθετηθούν σε μία σειρά ακ-1, ακ2, ..., ακΝ έτσι ώστε, δοθείσης μίας συνάρτησης διάταξης f, να ισχύει
f(αKl) <= f(ακ2) <= ... <= f(ακN) ή f(αKl) >= f(ακ2) >= ... >= f(ακN).
3.21 Να περιγράφει η μέθοδος ταξινόμησης ευθείας ανταλλαγής στοιχείων (φυσαλίδα) και να δοθεί ο
αλγόριθμος για έναν μονοδιάστατο πίνακα Ν στοιχείων.
Η μέθοδος ταξινόμησης ευθείας ανταλλαγής στοιχείων, βασίζεται στις διαδοχικές αντιμεταθέσεις στοιχείων έτσι
ώστε τα στοιχεία με τις μικρότερες τιμές να ανέβουν στις πρώτες θέσεις του πίνακα. Τα μικρότερα στοιχεία ή
κατά μια έννοια τα ελαφρύτερα, ακολουθούν την πορεία μιας φυσαλίδας.
Για να γίνει καλύτερα αντιληπτός ο αλγόριθμος θα χρησιμοποιήσουμε τον ακόλουθο μονοδιάστατο πίνακα:
23
15
-1
10
2
1ο Βήμα
-1
23
23
15
15
-1
2
10
Ο αλγόριθμος, αρχικά, έχει ως στόχο να βρει το
μικρότερο στοιχείο και να το τοποθετήσει στην
πρώτη θέση.
23
15
-1
Αρχίζοντας από το τελευταίο στοιχείο του πίνακα,
συγκρίνουμε τα στοιχεία ανά δυο και τα
αντιμεταθέτουμε, αν χρειαστεί, ώστε το μικρότερο
από τα δυο στοιχεία να βρεθεί πρώτο.
10
2
23
-1
15
15
-1
2
10
Στον πίνακα του παραδείγματος, συγκρίνουμε πρώτα το 5ο στοιχείο με το 4ο και τα αντιμεταθέτουμε, ώστε το 2
να ανέβει πριν το 10.
Έπειτα συγκρίνουμε το 4° στοιχείο με το 3°, αλλά δεν χρειάζεται να κάνουμε αντιμετάθεση τιμών, γιατί το -1
βρίσκεται ήδη πριν το 2.
Στη συνέχεια γίνεται σύγκριση μεταξύ του 3ου και του 2ου στοιχείου και το -1 ανεβαίνει πριν το 15.
-1
23
215
215
10
-1
23
15
2
10
Τέλος, γίνεται σύγκριση του 2ου και του 1ου στοιχείου και το -1 πηγαίνει στην 1 η θέση του πίνακα ενώ το 23
στη δεύτερη θέση.
2° Βήμα
-1
Στο 2° βήμα δεν ασχολούμαστε με το πρώτο στοιχείο του πίνακα μια και όπως γνωρίζουμε από
το προηγούμενο βήμα, αυτό είναι το μικρότερο στοιχείο του πίνακα και βρίσκεται ήδη στην 2
τελική του θέση.
23
Ο αλγόριθμος πλέον προσπαθεί να βρει το αμέσως μεγαλύτερο στοιχείο και να το τοποθετήσει 15
στη δεύτερη θέση.
10
Αρχίζοντας πάλι από το τελευταίο στοιχείο του πίνακα, συγκρίνουμε τα στοιχεία ανά δυο και
τα αντιμεταθέτουμε, όπως νωρίτερα, με τη διαφορά όμως ότι η σύγκριση δεν φθάνει στο πρώτο στοιχείο του
πίνακα.
-1
2
-1
2
23
15
10
23
10
15
3ο Βήμα
Στο 3° βήμα στόχος είναι να βρούμε τη μικρότερη τιμή από τις 3 μη ταξινομημένες
τιμές και να τη φέρουμε στην 3η θέση.
Αρχίζοντας πάλι από το τελευταίο στοιχείο του πίνακα, το συγκρίνουμε με το
προτελευταίο στοιχείο. Το 10 ανεβαίνει στην 4η θέση και το 15 κατεβαίνει στην
τελευταία θέση.
Κατόπιν συγκρίνονται το 10 με το 23 και το 10 ανεβαίνει στην 3η θέση.
4ο Βήμα
10
23
15
-1
Στο 4ο βήμα έχουν μείνει αταξινόμητα μόνο τα δυο τελευταία στοιχεία του πίνακα.
Συγκρίνουμε το τελευταίο στοιχείο του πίνακα με το προτελευταίο στοιχείο και το 10
στην 4η θέση και το 15 κατεβαίνει στην τελευταία θέση.
-1
2
ανεβαίνει
Από το παράδειγμα μπορούμε να εξάγουμε κάποια χρήσιμα συμπεράσματα σχετικά με τη λειτουργία
2
10
15
-1
2
10
23
15
της μεθόδου ταξινόμησης:
23
1. Για να πάει κάθε στοιχείο στη τελική του θέση, έγιναν συνολικά τόσα βήματα όσα
τα στοιχεία του πίνακα μείον ένα. Συνεπώς, αν είχαμε Ν στοιχεία θα γινόντουσαν Ν-Ι βήματα ή διαφορετικά
Ν-Ι επαναλήψεις της ίδιας διαδικασίας.
2. Σε κάθε βήμα γινόταν διαφορετικός αριθμός συγκρίσεων των ζευγών των αριθμών. Στο 1ο βήμα έγιναν 4
συγκρίσεις, στο 2ο βήμα 3 συγκρίσεις, στο 3ο 2 συγκρίσεις και στο τελευταίο βήμα 1 σύγκριση. Αν
προσπαθήσουμε να το εκφράσουμε αλγοριθμικά ως μια επανάληψη, η επανάληψη θα γίνεται κάθε φορά όσα και
τα εναπομείναντα αταξινόμητα στοιχεία μείον ένα.
Ο αλγόριθμος ταξινόμησης με τη μέθοδο της φυσαλίδας είναι:
Αλγόριθμος Φυσαλίδα
Δεδομένα II Ν, Π II
Για i από 2 μέχρι Ν ! Η επανάληψη γίνεται Ν-Ι φορές
Για j από Ν μέχρι i με βήμα -1 ! Η σύγκριση αρχίζει από το τέλος
Αν Π[j-1] > Π[j] τότε
! του πίνακα
Αντιμετάθεσε Π[j-1], Π[j]
Τέλος-αν
Τέλος-επανάληψης
Τέλος-επανάληψης
Αποτελέσματα // Π //
! Εμφάνιση του ταξινομημένου πίνακα
Τέλος Φυσαλίδα
Σημ1. Η εντολή Αντιμετάθεσε Π[j-1], Π[j] αντιμεταθέτει τις τιμές των στοιχείων Π[j-1] και Π[j]. Η εντολή θα
μπορούσε να γραφεί και με τον γνωστό μας από προηγούμενο κεφάλαιο τρόπο, ως εξής:
temp  Π[J-1]
Π[J-1] Π[J]
Π[J]  temp
Σημ2.
Για i από 2 μέχρι Ν
Για j από Ν μέχρι i με βήμα -1
Αν Π[j-1] > Π[j] τότε
Αντιμετάθεσε Π[j-1], Π[j]
Τέλος-αν
Τέλος-επανάληψης
Για i από 2 μέχρι Ν
Για j από Ν μέχρι i με βήμα -1
Αν Π[j-1] < Π[j] τότε
Αντιμετάθεσε Π[j-1], Π[j]
Τέλος-αν
Τέλος-επανάληψης
! Κάνω ΑΥΞΟΥΣΑ ταξινόμηση
1
2
3
4
5
! Κάνω ΦΘΙΝΟΥΣΑ ταξινόμηση
5
4
3
2
1
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΙΝΑΚΩΝ ΣΤΟΙΒΑΣ ΚΑΙ ΟΥΡΑΣ
ΘΕΩΡΗΤΙΚΕΣ ΜΕΘΟΔΟΛΟΓΙΕΣ ΠΟΥ ΠΡΕΠΕΙ ΝΑ ΓΝΩΡΙΖΕΤΑΙ
 Στους πίνακες παρατηρούμε τα εξής:
1. Το όνομα ενός πίνακα ακολουθεί τους ίδιους κανόνες ονοματολογίας όπως και οι απλές μεταβλητές.
Αποδεκτά ονόματα είναι: Α, Β, Μισθοί Άθροισμα, Πλήθος, Βαθμός, κ.ο.κ.
2. Το πλήθος των στοιχείων ενός πίνακα είναι σταθερό και καθορισμένο από την αρχή του αλγορίθμου.
3. Στον πίνακα αναφερόμαστε με το όνομά του, ενώ σε ένα στοιχείο του με το όνομα του πίνακα και το
δείκτη του, δηλ. τη θέση του.
4. Για να επεξεργαστούμε έναν πίνακα σε έναν αλγόριθμο, πρέπει να επεξεργαστούμε κάθε στοιχείο
του χωριστά. Δηλ. για να εμφανίσουμε τις τιμές ενός πίνακα 10 θέσεων χρειαζόμαστε 10 εντολές
Εμφάνισε ή μια επανάληψη 10 φορών.
5. Κάθε πίνακας επιτρέπεται να περιέχει στοιχεία μόνο του ιδίου τύπου και συνήθως αναφέρονται μαζί με
το όνομά του οι θέσεις του πίνακα και ο τύπος του, π.χ. πίνακας Α ακεραίων αριθμών 10 θέσεων.
6. Οι τιμές δυο ή περισσοτέρων στοιχείων ενός πίνακα μπορεί να είναι ίδιες.
 Όταν θέλουμε να επεξεργαστούμε όλα τα στοιχεία ενός πίνακα (π.χ. να εισάγουμε τιμές σε όλα τα στοιχεία ή
να εμφανίσουμε όλα τα στοιχεία του) τότε θα χρησιμοποιούμε τον εξής βρόχο επανάληψης
Για i από τ1 μέχρι τ2
Επεξεργασία του στοιχείου Π[i]
Τέλος-επανάληψης
Όπου τ1 είναι η θέση του αρχικού στοιχείου που θέλουμε να επεξεργαστούμε και τ2 είναι η θέση του τελικού
στοιχείου που θέλουμε να επεξεργαστούμε.
Ειδικά για το διάβασμα και την εμφάνιση των στοιχείων του πίνακα μπορούμε να χρησιμοποιήσουμε
αντίστοιχα τα Δεδομένα // Π // και τα Αποτελέσματα //ΙΙ / στην αρχή και το τέλος του αλγορίθμου.
 Στις ασκήσεις όπου μας ζητείται να δημιουργήσουμε έναν πίνακα, θα πρέπει πάντα να προσπαθούμε να
ανακαλύψουμε τη σχέση της γραμμής και της στήλης στοιχείων που παρουσιάζουν κάποια ιδιαιτερότητα.
Οι συνηθέστερες περιπτώσεις σχέσεων μεταξύ γραμμής και στήλης είναι:
1. i= j, στοιχεία της κυρίας διαγώνιου
2. i = Ν - j + 1, στοιχεία της δευτερεύουσας διαγώνιου
3. i < j, στοιχεία πάνω από την κύρια διαγώνιο
4. i > j, στοιχεία κάτω από την κύρια διαγώνιο
5. (i + j) mod 2 = 0 ή =/= 0, άρτιο ή περιττό άθροισμα δεικτών γραμμής και στήλης
 Στη δομή δεδομένων στοίβα παρατηρούμε τα εξής:
1. Η μέθοδος επεξεργασίας της στοίβας ονομάζεται Τελευταίο μέσα, πρώτο έξω ή με την αγγλική
συντομογραφία LIFO (Last Ιn First Out).
2. Κάθε νέο στοιχείο προστίθεται στην κορυφή της στοίβας.
3. Κάθε φορά μπορούμε να επεξεργαστούμε μόνο το στοιχείο που βρίσκεται στην κορυφή της στοίβας.
4. Για να επεξεργαστούμε ένα στοιχείο που δεν βρίσκεται στην κορυφή της στοίβας πρέπει να
απωθήσουμε τα στοιχεία που βρίσκονται πάνω του.
5. Μπορεί να γίνει απώθηση, από την κορυφή της στοίβας, μόνο ενός στοιχείου κάθε φορά.
 Στη δομή δεδομένων στοίβα παρατηρούμε τα εξής:
1. Η μέθοδος επεξεργασίας της στοίβας ονομάζεται ΙΙρώτο μέσα, πρώτο έξω ή με την αγγλική
συντομογραφία FIFO (First Ιn First Out).
2. Κάθε στοιχείο προστίθεται στο τέλος της ουράς.
3. Κάθε φορά μπορούμε να επεξεργαστούμε μόνο το στοιχείο που βρίσκεται στην αρχή της ουράς.
4. Για να επεξεργαστούμε ένα στοιχείο που δεν βρίσκεται στην αρχή της ουράς, πρέπει να εξάγουμε όλα
τα στοιχεία που βρίσκονται μπροστά του.
5. Μπορεί να γίνει εξαγωγή, από την αρχή της ουράς, μόνο ενός στοιχείου κάθε φορά.
 Παρακάτω φαίνεται με ποια μορφή είναι απεικονισμένος ένας Μονοδιάστατος και ένας Δυσδιάστατο Πίνακας.