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

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

Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Σύνοψη Προηγούμενου (2/2) Σημερινό Μάθημα. Πίνακες. Εισαγωγή, σε χρόνο O(1).

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

Σύνοψη Προηγούµενου (2/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Πρόβληµα: Κατασκευή Οµοιόµορφα Τυχαίας Μετάθεσης.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

4. Συνδεδεμένες Λίστες

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

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

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

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

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

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

Επιµέλεια Θοδωρής Πιερράτος

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

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

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

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

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

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

Standard Template Library (STL) C++ library

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

8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

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

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

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

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

Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ουρές Προτεραιότητας Σωροί υλοποίηση και πράξεις Ο αλγόριθμος ταξινόμησης HeapSort

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

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

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

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

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

Προγραμματισμός Η/Υ. Δομές Δεδομένων. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας

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

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

Οντοκεντρικός Προγραμματισμός

Δομές Δεδομένων Standard Template Library (STL) 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Αφηρημένες Δομές Δεδομένων. Στοίβα (Stack) Υλοποίηση στοίβας

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

Στοίβες. ΟΑΤ της Στοίβας. Περιγραφή και Υλικό Ανάγνωσης. Αφηρηµένοι Τύποι εδοµένων (AΤ )

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

Προγραμματισμός Η/Υ. 4 η ενότητα: Δομές Δεδομένων. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

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

Ουρά Προτεραιότητας: Heap

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

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

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

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

Κεφάλαιο 3 : εδοµένα. Πίνακες Στοίβα Ουρά Αναζήτηση Ταξινόµηση. Προγράµµατα

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

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

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

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή

Ουρά Προτεραιότητας: Heap

#2 Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

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

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

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

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

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

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

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

Δοµές Δεδοµένων. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 2

Ουρά Προτεραιότητας: Heap

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

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

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας

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

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

JDSL Java Data Structures Library

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

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης

Ενότητα 7 Ουρές Προτεραιότητας


Δομές Δεδομένων. Λουκάς Γεωργιάδης.

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής

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

Transcript:

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 19/10/2017

Ανακεφαλαίωση: Πίνακες Οι δομές δεδομένων που είδαμε ως τώρα (πίνακες) είναι κατάλληλες για αναπαράσταση δεδομένων σαν αυτά που βρίσκονται σε μια βάση δεδομένων Παράδειγμα: Αρχεία προσωπικού, αποθήκη, οικονομικά δεδομένα, κτλ. ηλαδή δεδομένα που υφίστανται στον πραγματικό κόσμο Τέτοιες δομές διευκολύνουν την πρόσβαση στα δεδομένα Αποδοτική εισαγωγή, διαγραφή, και αναζήτηση δεδομένων Δομές Δεδομένων, 3ο Εξάμηνο 2

Δομές Δεδομένων ως Προγραμματιστικά Εργαλεία Οι δομές δεδομένων που θα εξετάσουμε στη συνέχεια χρησιμοποιούνται ως προγραμματιστικά εργαλεία Αποτελούν εννοιολογικές αναπαραστάσεις που υποβοηθούν στην ανάπτυξη προγραμμάτων ημιουργούνται για να επιτελέσουν μια συγκεκριμένη λειτουργία κατά τη διάρκεια εκτέλεσης ενός προγράμματος Όταν ολοκληρωθεί η λειτουργία, η δομή δε χρησιμεύει πλέον, και καταστρέφεται Δομές Δεδομένων, 3ο Εξάμηνο 3

Περιορισμένη Προσπέλαση Σε έναν πίνακα, η προσπέλαση ενός αντικειμένου μπορεί να γίνει είτε άμεσα (εφόσον η θέση του είναι γνωστή), π.χ. A[12] είτε διατρέχοντας τον πίνακα κελί-κελί ώσπου να βρεθεί, π.χ. με ένα βρόχο (loop) for(int i=0 ; i < A.length ; i++) {... A[i]... } Στις δομές που θα εξετάσουμε τώρα η προσπέλαση είναι περιορισμένη Μόνο ένα αντικείμενο μπορεί να διαβαστεί ή να διαγραφεί μια δεδομένη χρονική στιγμή Η διεπαφή (interface) των δομών αυτών είναι σχεδιασμένη ώστε να επιβάλλει την περιορισμένη πρόσβαση Δομές Δεδομένων, 3ο Εξάμηνο 4

Πιο Αφηρημένες Δομές Οι στοίβες και οι ουρές είναι πιο αφηρημένες δομές από τους πίνακες Ορίζονται ουσιαστικά από το interface τους Ο εσωτερικός μηχανισμός που τις υλοποιεί δεν είναι ορατός στο χρήστη τους Παράδειγμα Μία στοίβα μπορεί να υλοποιηθεί με χρήση πίνακα ή με συνδεδεμένη λίστα Δομές Δεδομένων, 3ο Εξάμηνο 5

Στοίβες (Stacks)

Στοίβα (Stack) LIFO (Last In, First Out) δομή δεδομένων H στοίβα περιορίζει την προσπέλαση στo στοιχείο που εισήχθη πιο πρόσφατα Η δομή στοίβα μπορεί να υλοποιηθεί με έναν πίνακα και έναν δείκτη στο στοιχείο της κορυφής της. topofstack Δομές Δεδομένων, 3ο Εξάμηνο 7

Μερικές Εφαρμογές Στοιβών Έλεγχος ισορροπίας παρενθέσεων και αγκύλων σε μία έκφραση Συντακτική ανάλυση εκφράσεων, όπως 3*(4+5) Βοηθητική δομή για αλγόριθμους εξέτασης κόμβων δέντρου ή αναζητήσεις στις κορυφές ενός γράφου Μικροεπεξεργαστές χρησιμοποιούν αρχιτεκτονική που στηρίζεται σε στοίβες Υπολογιστές τσέπης Δομές Δεδομένων, 3ο Εξάμηνο 8

Αναλογία με Φυσικό Κόσμο Μια στοίβα με ταχυδρομικές επιστολές Εξέταση των επιστολών από πάνω προς τα κάτω Μια στοίβα από πιάτα Πλύσιμο των πιάτων από πάνω προς τα κάτω Βασικές ενέργειες μιας στοίβας Τοποθέτηση στοιχείου στην κορυφή μιας στοίβας Ονομάζεται εισαγωγή (push) Απομάκρυνση στοιχείου από την κορυφή Ονομάζεται εξαγωγή (pop) Δομές Δεδομένων, 3ο Εξάμηνο 9

Παράδειγμα Λειτουργιών Στοίβας Δομές Δεδομένων, 3ο Εξάμηνο 10

Υλοποίηση Στοίβας top δείκτης στην κορυφή της στοίβας Κενή στοίβα: top = -1 stackarray πίνακας στον οποίο αποθηκεύονται τα στοιχεία της στοίβας maxsize μέγεθος πίνακα που υλοποιεί τη στοίβα Δομές Δεδομένων, 3ο Εξάμηνο 11

October 19, 2017 Δομές Δεδομένων, 3ο Εξάμηνο 12

Δομές Δεδομένων, 3ο Εξάμηνο 13

Δομές Δεδομένων, 3ο Εξάμηνο 14

Χειρισμός Λαθών Τι θα συμβεί κατά την εισαγωγή στοιχείου σε πλήρη στοίβα; Τι θα συμβεί κατά την εξαγωγή στοιχείου από κενή στοίβα; Στη συγκεκριμένη υλοποίηση ο χειρισμός των λαθών αφήνεται στο χρήστη if (! thestack.isfull() ) thestack.push(item); else System.out.println( Error ); Άλλες λύσεις: εσωτερικός έλεγχος λαθών στην κλάση με χρήση exception Δομές Δεδομένων, 3ο Εξάμηνο 15

Παράδειγμα Εφαρμογής Στοίβας Οι μεταγλωττιστές (compilers) χρειάζεται να ελέγχουν εάν υπάρχει ισορροπία στα σύμβολα σε διάφορες εκφράσεις ( should be matched with ) [ should be matched with ] /* should be matched with */, etc Examples of mismatches: a = b + (c d) * (e f)); while (m < (n[8] + a) { Λείπει ) p = 7; /* initializes p */ r =6; } Δομές Δεδομένων, 3ο Εξάμηνο 16

Αλγόριθμος Balance Checker read character ch; while not end of file if ch is (, or [, or { push(ch); else if ch is ), ], or } { pop symbol from stack; if ch and popped symbol not matching return error; } else if ch is anything else, ignore read next character ch from file; if stack is empty return success; else return error; Δομές Δεδομένων, 3ο Εξάμηνο 17

Δομές Δεδομένων, 3ο Εξάμηνο 18

Δομές Δεδομένων, 3ο Εξάμηνο 19

Πολυπλοκότητα Λειτουργιών Στοίβας Τα στοιχεία εισάγονται και ανακτώνται από μια στοίβα σε σταθερό χρόνο O(1) Είναι ανεξάρτητο του μεγέθους της στοίβας (N) Και οι δύο λειτουργίες είναι πολύ αποδοτικές (γρήγορες) εν απαιτούνται συγκρίσεις στοιχείων ή μετακινήσεις στοιχείων, που εμπεριέχουν κόστος Όμως δεν υπάρχει δυνατότητα απευθείας ανάκτησης ενός συγκεκριμένου στοιχείου από τη στοίβα ανάκτησης του i-οστού στοιχείου Δομές Δεδομένων, 3ο Εξάμηνο 20

Ουρές (Queues)

Ουρά (Queue) FIFO (First In, First Out) δομή δεδομένων Μία γραμμή αναμονής που αυξάνεται προσθέτοντας στοιχεία στο τέλος της και μικραίνει αφαιρώντας στοιχεία από την αρχή της Αντίθετα με τη στοίβα και τα δύο άκρα χρησιμοποιούνται Δομές Δεδομένων, 3ο Εξάμηνο 22

Αναλογία με Φυσικό Κόσμο Ουρά αναμονής για επιβίβαση σε μέσο μαζικής μεταφοράς Πακέτα δεδομένων που περιμένουν τη σειρά τους να μεταδοθούν στο Internet Ουρά εκτυπωτή με εργασίες εκτύπωσης που αναμένουν επεξεργασία Ουρά αποθήκευσης χαρακτήρων/συμβόλων που πληκτρολογούνται σε επεξεργαστή κειμένου Δομές Δεδομένων, 3ο Εξάμηνο 23

Βασικές Ενέργειες σε μια Ουρά Εισαγωγή στοιχείου Τοποθετείται πίσω στην ουρά Αφαίρεση στοιχείου Απομακρύνεται από μπροστά από την ουρά rear front Δομές Δεδομένων, 3ο Εξάμηνο 24

Αναπαράσταση Ουράς front αρχή της ουράς, η θέση στην οποία θα γίνει η επόμενη εξαγωγή rear τέλος της ουράς, τελευταία θέση στην οποία έχουμε εισάγει κάποιο στοιχείο rear+1 η επόμενη θέση στην οποία θα γίνει εισαγωγή Κενή ουρά front = 0, nitems = 0, rear = -1 Δομές Δεδομένων, 3ο Εξάμηνο 25

Αναπαράσταση Ουράς front rear Δομές Δεδομένων, 3ο Εξάμηνο 26

Παράδειγμα Λειτουργίας Ουράς Δομές Δεδομένων, 3ο Εξάμηνο 27

Υλοποίηση Ουράς με Κυκλικό Πίνακα Μπορεί να υλοποιηθεί χρησιμοποιώντας πίνακα Μη αποδοτική εάν μετακινούμε όλα τα στοιχεία μετά από κάθε κλήση της remove() Σπατάλη χώρου εάν δεν χρησιμοποιούμε όλα τα κελιά Για να αντιμετωπίσουμε το πρόβλημα διαχείρισης χώρου Μπορούμε να φανταστούμε την ουρά σαν έναν κυκλικό πίνακα ιατηρούμε 2 δείκτες: έναν για την αρχή (front) και έναν για το τέλος της ουράς (rear) Δομές Δεδομένων, 3ο Εξάμηνο 28

Παράδειγμα Λειτουργίας Ουράς με Κυκλικό Πίνακα (Αναδίπλωση) Όταν οι δείκτες back, front που δείχνουν στο τέλος και στην αρχή της ουράς αντίστοιχα φτάσουν στο τέλος του πίνακα Επαναορίζουμε τους δείκτες ώστε να δείχνουν και οι δύο στην αρχή October 19, 2017 Δομές Δεδομένων, 3ο Εξάμηνο 29

Βασικές Λειτουργίες Ουράς insert(val): εισάγει το αντικείμενο val στο τέλος της ουράς remove(): απομακρύνει το πρώτο στοιχείο από την ουρά peekfront(): επιστρέφει το πρώτο στοιχείο της ουράς isempty(): ελέγχει εάν η ουρά είναι άδεια isfull(): ελέγχει εάν η ουρά είναι γεμάτη size(): αριθμός στοιχείων στην ουρά Δομές Δεδομένων, 3ο Εξάμηνο 30

October 19, 2017 Δομές Δεδομένων, 3ο Εξάμηνο 31

October 19, 2017 Δομές Δεδομένων, 3ο Εξάμηνο 32

October 19, 2017 Δομές Δεδομένων, 3ο Εξάμηνο 33

Πολυπλοκότητα Λειτουργιών Ουράς (σε πλήρη αντιστοιχία με τη στοίβα) Τα στοιχεία εισάγονται και ανακτώνται από μια ουρά σε σταθερό χρόνο O(1) Είναι ανεξάρτητο του μεγέθους της ουράς (N) Και οι δύο λειτουργίες είναι πολύ αποδοτικές (γρήγορες) εν απαιτούνται συγκρίσεις στοιχείων ή μετακινήσεις στοιχείων, που εμπεριέχουν κόστος Όμως δεν υπάρχει δυνατότητα απευθείας ανάκτησης ενός συγκεκριμένου στοιχείου από την ουρά ανάκτησης του i-οστού στοιχείου Δομές Δεδομένων, 3ο Εξάμηνο 34

Ουρές Προτεραιότητας (Priority Queues) Δομές Δεδομένων, 3ο Εξάμηνο 35

Ουρές Προτεραιότητας: Εισαγωγή Μια ουρά προτεραιότητας είναι μια πιο εξειδικευμένη δομή δεδομένων σε σχέση με τη στοίβα ή την ουρά Όπως και στην ουρά, τα στοιχεία αφαιρώνται από την αρχή Όμως, τα στοιχεία ταξινομούνται (κατά την εισαγωγή) έτσι, ώστε το στοιχείο με το χαμηλότερο (ή το υψηλότερο) κλειδί να βρίσκεται πάντα μπροστά Δομές Δεδομένων, 3ο Εξάμηνο 36

Ουρές Προτεραιότητας: Εισαγωγή Τα στοιχεία τοποθετούνται στην ουρά με βάση την σημαντικότητά τους. Θεωρούμε ότι το στοιχείο με το μικρότερο (μεγαλύτερο) κλειδί έχει μεγαλύτερη προτεραιότητα Ο στόχος μας είναι να προσπελάσουμε το σημαντικότερο στοιχείο στη συλλογή απομακρύνουμε το στοιχείο από τη συλλογή Δομές Δεδομένων, 3ο Εξάμηνο 37

Λειτουργίες Μία ουρά προτεραιότητας είναι ένας αφηρημένος τύπος δεδομένων (abstract data type ADT) που προσφέρει μεθόδους που επιτρέπουν Απομάκρυνση στοιχείου με την ελάχιστη ή μέγιστη τιμή κλειδιού (στοιχείο στην αρχή της ουράς) Εισαγωγή Δομές Δεδομένων, 3ο Εξάμηνο 38

Υλοποίηση Υλοποίηση ουράς προτεραιότητας Ταξινομημένος πίνακας Απομάκρυνση του μεγαλύτερου στοιχείου γρήγορα Ο(1) Εισαγωγή διαρκεί περισσότερο χρόνο Ο(Ν) Πρέπει να μετακινηθούν τα μισά στοιχεία του πίνακα (κατά μέσο όρο) ώστε να εισαχθεί το νέο στοιχείο στη σωστή θέση Σωρός (είδος δέντρου) Εκτελεί εισαγωγή και διαγραφή σε χρόνο Ο(logN) Δομές Δεδομένων, 3ο Εξάμηνο 39

Δομές Δεδομένων, 3ο Εξάμηνο 40

Δομές Δεδομένων, 3ο Εξάμηνο 41

Δομές Δεδομένων, 3ο Εξάμηνο 42

Δομές Δεδομένων, 3ο Εξάμηνο 43

Άσκηση 1: Υλοποίηση Ουράς με 2 Στοίβες Δομές Δεδομένων, 3ο Εξάμηνο 44

Άσκηση 1 Δομές Δεδομένων, 3ο Εξάμηνο 45

Άσκηση 1 Δομές Δεδομένων, 3ο Εξάμηνο 46

Άσκηση 2: Υλοποίηση Στοίβας με 2 Ουρές Δομές Δεδομένων, 3ο Εξάμηνο 47

Άσκηση 2 Δομές Δεδομένων, 3ο Εξάμηνο 48

Άσκηση 2 Δομές Δεδομένων, 3ο Εξάμηνο 49