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

Σχετικά έγγραφα
Βασικές Δομές Δεδομένων

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

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

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

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

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

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

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

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

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

Δηάιεμε 8: Αθεξεκέλνη Τύπνη Δεδνκέλσλ

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 2η: Στοίβες Ουρές - Λίστες Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

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

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

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

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

Υλοποίηση Λιστών. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

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

Ενότητα 2 Στοίβες Ουρές - Λίστες

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

Διορθώσεις σελ

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

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

Ενότητα 2 Στοίβες Ουρές - Λίστες

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

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

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

ΕΝΟΤΗΤΑ 3 ΓΡΑΜΜΙΚΕΣ ΛΙΣΤΕΣ

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

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

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

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

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

Υλοποίηση Λειτουργιών Στοίβας Απλά(1/2)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο

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

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

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

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ

Σύνοψη Προηγούμενου. Λίστες (Lists) Συνδεδεμένες Λίστες: Εισαγωγή (1/2) Συνδεδεμένες Λίστες. Ορέστης Τελέλης

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

Διαδικασιακός Προγραμματισμός

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

Οι δομές δεδομένων στοίβα και ουρά

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

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

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

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

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

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

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

Επιλογές και Κριτήρια Σχεδιασμού ΑΤΔ Ανεξαρτήτως από Γλώσσα Υλοποίησης 24/4/2012

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΟΝΟΜΑΤΕΠΩΝΥΜΟ:

ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα

Διάλεξη 21: Γράφοι II - Τοπολογική Ταξινόμηση

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

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

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

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

3 ΟΥ και 9 ΟΥ ΚΕΦΑΛΑΙΟΥ

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

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

ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων

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

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

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

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

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

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

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

Transcript:

Διάλεξη 8: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Στατική Δέσμευση Μνήμης Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ 8-1

Αφηρημένοι Τύποι Δεδομένων Τύπος Δεδομένων ένας τύπος μαζί με ένα σύνολο πράξεων για τη δημιουργία και επεξεργασία δεδομένων του τύπου (int,char,float) Αφηρημένος Τύπος Δεδομένων (ΑΤΔ) μαθηματικό μοντέλο που αποτελείται από ένα ή περισσότερα πεδία ορισμού και ένα σύνολο πράξεων για επεξεργασία των πεδίων ορισμού. Όταν μιλούμε για ένα ΑΤΔ μας ενδιαφέρει η προδιαγραφή του και πως θα τον χρησιμοποιήσουμε. Δεν μας ενδιαφέρει ο τρόπος υλοποίησής του μέσα στη μηχανή. (Η υλοποίηση ενός ΑΤΔ μπορεί να αλλάξει χωρίς να επηρεάσει την ορθότητα προγραμμάτων που τον χρησιμοποιούν.) 8-2

Αφηρημένοι Τύποι Δεδομένων Παραδείγματα 1. Ο τύπος int μαζί με τις πράξεις +, *, /, =, είναι ένας τύπος δεδομένων. Για να τον χρησιμοποιήσουμε χρειάζεται να γνωρίζουμε το σύνολο των πράξεων. Ο τρόπος αναπαράστασής του στον υπολογιστή δεν μας ενδιαφέρει 2. Ο Αφηρημένος Τύπος Δεδομένων (ΑΤΔ) Ουρά Προτεραιότητας, το οποίο είναι ένα σύνολο στοιχείων τύπου key (π.χ. key = (int,int) ), συνοδευόμενο από τις πιο κάτω πράξεις. δημιούργησε την άδεια ουρά προτεραιότητας, q, έλεγξε αν η ουρά q είναι άδεια βάλε το στοιχείο k στην ουρά q, αφαίρεσε και επίστρεψε το μικρότερο στοιχείο της q (σύμφωνα με τη γραμμική διάταξη της ουράς). Ένας ΑΤΔ μπορεί να υλοποιηθεί με πολλούς τρόπους, π.χ. μια ουρά προτεραιότητας μπορεί να υλοποιηθεί από δομές λίστας, δενδρικές δομές κλπ. 8-3

Λίστες Λίστα μια ακολουθία στοιχείων (πχ. Queue ή Stack όπως θα δούμε στην συνέχεια) Λ = α 1, α 2,..., α n Αναφερόμαστε στα στοιχεία της λίστας ως κόμβους. Με Λ[i] θα αναφερόμαστε στο i-οστό στοιχείο της λίστας. Μήκος μιας λίστας Λ ονομάζεται ο αριθμός των στοιχείων της και συμβολίζεται ως Λ. Αν Λ = 0 τότε αναφερόμαστε στην κενή λίστα την οποία συμβολίζουμε ως. Συνοδεύοντας λίστες με ένα σύνολο πράξεων μπορούμε να ορίσουμε αφηρημένους τύπους δεδομένων. Χρήσιμες πράξεις περιλαμβάνουν τις πιο κάτω Δημιουργία λίστας Εισαγωγή νέου κόμβου στη λίστα Εξαγωγή κόμβου από τη λίστα Εύρεση κόμβου με ορισμένη ιδιότητα Διάταξη της λίστας σύμφωνα με κάποια σχέση 8-4

Λίστες Οι πιο σημαντικές πράξεις στον ορισμό ενός ΑΤΔ-λίστας είναι η εισαγωγή και η εξαγωγή κόμβων στα άκρα της λίστας. Με βάση την προδιαγραφή αυτών των πράξεων, διακρίνουμε δύο βασικούς τύπους λίστας που έχουν πολλές και σημαντικές εφαρμογές σε κλάδους επιστημών που χρησιμοποιούν υπολογιστικές μεθόδους. Είναι οι ακόλουθες: Η στοίβα (stack) που έχει μόνο ένα άκρο προσιτό για εισαγωγές και εξαγωγές κόμβων. (LIFO Last In First Out) Η ουρά (queue) όπου γίνονται εισαγωγές στο ένα άκρο και εξαγωγές από το άλλο. (FIFO First In First Out) Υπάρχουν και άλλοι ΑΤΔ-λίστας μικρότερης πρακτικής σημασίας, όπως ουρά με δύο άκρα, πολλαπλή στοίβα, κλπ 8-5

ΑΤΔ Λίστα 1 : Στοίβες Ορίζουμε μια στοίβα ως μια λίστα συνοδευόμενη από τις πιο κάτω πράξεις: MakeEmptyStack() IsEmptyStack(S) δημιούργησε την κενή στοίβα. επέστρεψε τη λογική τιμή που εκφράζει το αν η S είναι κενή. Push(x,S) εισήγαγε τον κόμβο x στη στοίβα S. Pop(S) διέγραψε τον κόμβο κορυφής της S. Top(S) δώσε τον κόμβο κορυφής της S. 8-6

ΑΤΔ Λίστα 1 : Στοίβες Οι πράξεις αυτές προδιαγράφονται από τους εξής κανόνες: IsEmptyStack (MakeEmptyStack()) = true IsEmptyStack(Push(x,S)) = false Pop(MakeEmptyStack()) = error Pop(Push(x,S)) = S πολιτική LIFO last in, first out Top(MakeEmptyStack()) = error Top(Push(x,S)) = x 8-7

Υλοποίηση ΑΤΔ Οι προαναφερθείς ΑΤΔ μπορούν να υλοποιηθούν με διάφορες δομές δεδομένων χρησιμοποιώντας είτε στατική είτε δυναμική χορήγηση μνήμης. Στατική: Δέσμευση μνήμης πριν την εκκίνηση προγράμματος (πχ struct node student;) Δυναμική: Δέσμευση μνήμης κατά την διάρκεια της εκτέλεσης ( struct node *student με malloc() και free()) 8-8

Στοίβα με Στατική Δέσμευση Μνήμης Ο πιο απλός τρόπος είναι η χρήση μονοδιάστατου πίνακα. Χρειάζεται να γνωρίζουμε από την αρχή το μήκος της λίστας. Για την παράσταση στοίβας με στοιχεία α 1, α 2,..., α n χρειαζόμαστε ένα πίνακα Α στον οποίο θα αποθηκεύσουμε τα στοιχεία της στοίβας, Α[i- 1] = α i. Πρέπει να γνωρίζουμε ανά πάσα στιγμή που βρίσκεται η κορυφή της στοίβας. Έτσι χρησιμοποιούμε μια εγγραφή με δύο πεδία 1. ένα πίνακα Α[0..n-1], και 2. μια μεταβλητή Length τύπου ακέραιος (που συγκρατεί τη θέση κορυφής). 0 1 2 3 4 5 Length 8-9

Στοίβα με Στατική Δέσμευση Μνήμης - Υλοποίηση Ο τύπος δεδομένων για τη Στοίβα με Στατική Δέσμευση Μνήμης είναι: typedef struct { type list[size]; int Length; Stack; Yλοποίηση πράξεων: MakeEmpty(Stack *S){ S->Length = 0; Push(type x, Stack *S){ if ((S->Length) < size) { S->list[S->Length]= x; (S->Length)++ int IsEmpty(Stack *S){ return (S->Length == 0); Στατική Δέσμευση size θέσεων μνήμης void Pop(Stack *S){ if!isempty(s) (S->Length)--; type Top(Stack *S){ if!isempty(s) return S->list[(S->Length)-1]; 8-10

ΑΤΔ Λίστα 2 : Ουρές Νέες εισαγωγές γίνονται στο πίσω άκρο. Εξαγωγές από το μπροστινό άκρο Ορίζουμε μια ουρά ως μια λίστα συνοδευόμενη από τις πιο κάτω πράξεις: MakeEmptyQueue() δημιούργησε την κενή ουρά <>. IsEmptyQueue(Q) επέστρεψε τη λογική τιμή που εκφράζει το αν η Q είναι κενή. EnQueue (x,q) εισήγαγε τον κόμβο x στην ουρά Q. DeQueue(Q) Top(Q) διέγραψε τον κόμβο εξόδου της Q δώσε τον κόμβο εξόδου της Q. 8-11

ΑΤΔ Λίστα 2 : Ουρές Οι πράξεις αυτές προδιαγράφονται από τους εξής κανόνες IsEmptyQueue(MakeEmptyQueue()) = true IsEmptyQueue (EnQueue(x,Q)) = false DeQueue(MakeEmptyQueue()) = error Top (MakeEmptyQueue ()) = error πολιτική FIFO first in, first out Προτού να εισάγουμε το x Top(EnQueue (x,q)) = if IsEmptyQueue( Q ) then x else Top(Q) 8-12

Ουρά (απλή) με Στατική Δέσμευση Μνήμης - Υλοποίηση Ο τύπος δεδομένων που χρειάζεται για τη δομή είναι: typedef struct { type list[size]; int front; int rear; QUEUE; Υλοποίηση πράξεων: MakeEmpty(QUEUE *Q){ Q->front = Q->rear = 0; int IsEmpty(QUEUE *Q){ return (Q->front == Q->rear); // SIZE is a const variable 8-13

Ουρά με Στατική Δέσμευση Μνήμης - Υλοποίηση Enqueue(type x, QUEUE *Q){ if (Q->rear < SIZE) { Q->list[Q->rear] = x; Q->rear++; Dequeue(QUEUE *Q){ if (!IsEmpty (Q) && (Q->front)<(Q->rear) ) { Q->front += 1; type Top(QUEUE *Q){ if (!IsEmpty(Q) return Q->list[Q->front]; 8-14

ΑΤΔ Λίστα 3 : Ουρές με Δύο Άκρα Ο ΑΤΔ ουρά με δύο άκρα είναι παρόμοιος με το ΑΤΔ ουρά, με τη διαφορά ότι έχει δύο άκρα και επιτρέπει εισαγωγές και εξαγωγές και στα δύο. rear front Μια ουρά δύο άκρων ορίζεται ως μια λίστα συνοδευόμενη από τις πιο κάτω πράξεις: MakeEmptyQueue(), IsEmptyQueue(Q) Insert(x, Q) Eject(Q) εισήγαγε το στοιχείο x στο μπροστινό άκρο της Q διέγραψε τον κόμβο στο πίσω άκρο της Q EnQueue (x,q) εισήγαγε τον στοιχείο x στο πίσω μέρος της Q. DeQueue(Q) Front(Q) Rear(Q) διέγραψε τον κόμβο στο μπροστινό άκρο της Q δώσε τον κόμβο στο μπροστινό άκρο της Q δώσε τον κόμβο στο πίσω άκρο της Q 8-15

Ουρά (2 ακρών) με Στατική Δέσμευση Μνήμης Για την παράσταση μιας ουράς με στοιχεία α 0, α 1,..., α n-1 χρειαζόμαστε ένα πίνακα Α στον οποίο θα αποθηκεύσουμε τα στοιχεία της ουράς, Θα αναφερόμαστε στο στοιχείο Α[i-1] σαν α i, δύο δείκτες που προσδιορίζουν τα δύο προσιτά άκρα της ουράς. Έτσι χρησιμοποιούμε μια εγγραφή με τρία πεδία 1. ένα πίνακα Α[n], 2. μια μεταβλητή front, τύπου ακέραιος, που συγκρατεί τη θέση που βρίσκεται αμέσως πριν τη θέση εξόδου, και 3. μια μεταβλητή rear, τύπου ακέραιος, που συγκρατεί τη θέση του τελευταίου στοιχείου της ουράς. Μέγεθος ουράς: rear-front+1 (πχ rear=2, front=0 => length=3) Length 8-16

Κυκλική Ουρά Για λόγους χώρου μνήμης μπορούμε να πραγματοποιήσουμε την ουρά με μια κυκλική διάταξη των λέξεων της μνήμης. Δηλαδή θα θεωρούμε ότι η περιοχή μνήμης δεν αρχίζει με τη λέξη Α[0] και τελειώνει με τη λέξη Α[n-1], αλλά ότι μετά την Α[n-1] ακολουθεί η Α[0]. A[n-2] A[n-1] A[0] A[1]... Έτσι μετά από μια ακολουθία εισαγωγών και εξαγωγών η ουρά μας πιθανόν να έχει την πιο κάτω μορφή όπου θεωρούμε ότι η αρχή της ουράς βρίσκεται στη θέση k και το τέλος της ουράς στη θέση 4. k 8-17