Λίστες και Ακολουθίες. Λίστες και ακολουθίες 1

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

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

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

Week. 6: Java Collections

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

H κλάση ArrayList. Γιώργος Θάνος. Γραφείο Γ. Γκλαβάνη 37. Αντικει ενοστραφής Προγρα. ος όροφος

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

JDSL Java Data Structures Library

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

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

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

Week 7: Java Collection Classes

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Κύρια σηµεία για µελέτη. έντρα. Ορολογία δέντρων. Τι είναι δέντρο

Παράδειγµα: Προσοµοίωση µιας ουράς FIFO Οι λειτουργίες που υποστηρίζονται από µια ουρά FIFO είναι: [enq(q,x), ack(q)] [deq(q), return(q,x)] όπου x είν

Δομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη

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

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

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

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

Συνδεδεμένη Λίστα ΣΛ null VK 23

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

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

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

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

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

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

Standard Template Library (STL) C++ library

Ουρά Προτεραιότητας (priority queue)

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

Εισαγωγή στην επιστήμη των υπολογιστών. Οργάνωση εδομένων Κεφάλαιο 11ο ομές εδομένων

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

2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Λίστες (Lists) Ορέστης Τελέλης. Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς

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

Κεφάλαιο 10 Ψηφιακά Λεξικά

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

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

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

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

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

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

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

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

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

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

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

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

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

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

public class ArrayQueue implements Queue {

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

Οι δυναμικές δομές δεδομένων στην ΑΕΠΠ

Γράφηµα (Graph) Εργαστήριο 10. Εισαγωγή

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

HY-252 Αντικειμενοστραφής Προγραμματισμός. Χειμερινό Εξάμηνο 2012 Διδάσκων: Χριστοφίδης Βασίλης. Ημερομηνία Παράδοσης: 16/11/2012

Δομές Δεδομένων - Εργαστήριο 2. Λίστες

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

Κεφάλαιο 6 Ουρές Προτεραιότητας

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

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

Συναρτήσεις Κατακερματισμού και Πίνακες Κατακερματισμού

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

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

1 Διάσχιση κατευθυνόμενων γραφημάτων

Αλγόριθµοι και Πολυπλοκότητα

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις

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

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


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

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

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

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

Δυναμικές Δομές Δεδομένων Λίστες Δένδρα - Γράφοι

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

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

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. Συνδεδεµένες οµές εδοµένων. Εισαγωγή στις Συνδεδεµένες οµές εδοµένων

Εισαγωγή ενός νέου στοιχείου. Επιλογή i-οστoύ στοιχείου : Εύρεση στοιχείου με το i-οστό μικρότερο κλειδί

public class ArrayStack implements Stack {

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

Transcript:

Λίστες και Ακολουθίες Λίστες και ακολουθίες 1

Κύρια σηµεία για µελέτη Απλά συνδεδεµένη λίστα Ο ΑΤ της Θέσης και της Λίστας ( 2.2.2) ιπλά συνδεδεµένη λίστα ( 2.2.2) ΑΤ της Ακολουθίας ( 2.2.3) Υλοποίηση του ΑΤ της Ακολουθίας ( 2.2.3) Iterators (2.2.3) Λίστες και ακολουθίες 2

Απλά Συνδεδεµένη Λίστα Μίααπλάσυνδεδεµένη λίστα είναι µία δοµή δεδοµένων αποτελούµενη από µία ακολουθία κόµβων Σε κάθε κόµβο αποθηκεύεται Ένα στοιχείο Ένας σύνδεσµος στον επόµενο κόµβο στοιχείο επόµενο κόµβος A B C D Λίστες και ακολουθίες 3

Στοίβα µε µία Απλά Συνδεδεµένη Λίστα Μπορούµε ναυλοποιήσουµε µια στοίβα µε µια απλά συνδεδεµένη λίστα Το στοιχείο κορυφή αποθηκεύεται στον πρώτο κόµβο της λίστας Οχώροςπουχρησιµοποιείται είναι O(n) και κάθε λειτουργία του ΑΤ της στοίβας παίρνει χρόνο O(1) κόµβοι t στοιχεία Λίστες και ακολουθίες 4

Ουρά µε Απλά Συνδεδεµένη Λίστα Μπορούµε ναυλοποιήσουµε µια ουρά µε µια απλά συνδεδεµένη λίστα Το πρώτο στοιχείο αποθηκεύεται στον πρώτο κόµβο Το τελευταίο στοιχείο αποθηκεύεται στον τελευταίο κόµβο Οχώροςπουχρησιµοποιείται είναι O(n) και κάθε λειτουργία του ΑΤ της ουράς παίρνει χρόνο O(1) κόµβοι r f στοιχεία Λίστες και ακολουθίες 5

ΟΑΤ τηςθέσης Ο ΑΤ της Θέσης µοντελοποιεί την ιδέα της θέσης µέσα σε µία δοµή δεδοµένων όπου είναι αποθηκευµένο ένα απλό αντικείµενο Παρέχει µια ενοποιηµένη οπτική διαφορετικών τρόπων αποθήκευσης δεδοµένων, όπως Ένα κελί ενός πίνακα Ένα κόµβο από µια συνδεδεµένη λίστα Μόνο µία µέθοδος χρησιµοποιείται: Το αντικείµενο element(): επιστρέφει το στοιχείο που είναι αποθηκευµένο στη θέση Λίστες και ακολουθίες 6

ΟΑΤ τηςλίστας ΟΑΤ τηςλίστας µοντελοποιεί µια ακολουθία από θέσεις που έχουν αποθηκευθεί αυθαίρετα δεδοµένα Καθιστά µία σχέση before/after ανάµεσα στις θέσεις των αντικειµένων Γενικές µέθοδοι(generic) : size(), isempty() Μέθοδοι ερωτήσεων(query ): isfirst(p), islast(p) Μέθοδοι πρόσπέλασης(accessor) : first(), last() before(p), after(p) Update methods: replaceelement(p, o), swapelements(p, q) insertbefore(p, o), insertafter(p, o), insertfirst(o), insertlast(o) remove(p) Λίστες και ακολουθίες 7

ιπλά Συνδεδεµένες Λίστες Μια ιπλά Συνδεδεµένη Λίστα ορίζει µια φυσική υλοποίηση του ΑΤ της λίστας Οι κόµβοι υλοποιούν τη Θέση και αποθηκεύουν: Ένα στοιχείο Ένα σύνδεσµο στον προηγούµενο κόµβο Ένα σύνδεσµο στον επόµενο κόµβο Ειδικοί κόµβοι trailer και header προηγούµενος επόµενος στοιχείο κόµβος header κόµβοι/θέσεις trailer στοιχεία Λίστες και ακολουθίες 8

Εισαγωγή ίνουµε έναπαράδειγµα της λειτουργίας insertafter(p, X), η οποία επιστρέφει τη θέση q p A B C p A B q C p q X A B X C Λίστες και ακολουθίες 9

ιαγραφή ίνουµε έναπαράδειγµα της λειτουργίας remove(p), όπου p = last() p A B C D A B C p D A B C Λίστες και ακολουθίες 10

Απόδοση Στην υλοποίηση του ΑΤ της λίστας µέσω µιας διπλά συνδεδεµένης λίστας Ο χώρος που χρησιµοποιείται από µία λίστα µε n στοιχεία είναι O(n) Ο χώρος που χρησιµοποιείται από κάθε θέση της λίστας είναι O(1) Όλες οι λειτουργίες του ΑΤ της λίστας τρέχουν σε χρόνο O(1) Η λειτουργία element() του ΑΤ της λίστας τρέχει σε χρόνο O(1) Λίστες και ακολουθίες 11

ΑΤ της Ακολουθίας ΟΑΤ τηςακολουθίας είναι η ένωση των ΑΤ του ιανύσµατος και της Λίστας Τα στοιχεία προσπελάζονται από την τάξη (rank), ή τη θέση(position) Γενικές µέθοδοι(generic): size(), isempty() Μέθοδοι βασισµένοι σε διάνυσµα(vector-based): elematrank(r), replaceatrank(r, o), insertatrank(r, o), removeatrank(r) Μέθοδοι βασισµένοι σε λίστα(list-based): first(), last(), before(p), after(p), replaceelement(p, o), swapelements(p, q), insertbefore(p, o), insertafter(p, o), insertfirst(o), insertlast(o), remove(p) Μέθοδοι της Γέφυρας (Bridge): atrank(r), rankof(p) Λίστες και ακολουθίες 12

Εφαρµογές των Ακολουθιών ΟΑΤ µιας ακολουθίας είναι µία βασική, γενικού σκοπού, δοµή δεδοµένων για αποθήκευση µιας διατεταγµένης συλλογής στοιχείων Άµεσες εφαρµογές: Γενική αντικατάσταση για στοίβα, ουρά, διάνυσµα, ήλίστα Μικρή βάση δεδοµένων (π.χ, βιβλίο διευθύνσεων) Έµµεσες εφαρµογές: ηµιουργία τµήµατος(block) πιο περίπλοκων δοµών δεδοµένων Λίστες και ακολουθίες 13

Υλοποίηση βασισµένη σε πίνακα Χρησιµοποιούµε έναν κυκλικό πίνακα που αποθηκεύει τις θέσεις Ένα αντικείµενο θέσης αποθηκεύει : Ένα στοιχείο Μία τάξη Οι δείκτες f και l δείχνουν την πρώτη και τελευταία θέση S 0 1 2 3 f l στοιχεία θέσεις Λίστες και ακολουθίες 14

Υλοποιήσεις Ακολουθίας Λειτουργία Πίνακας Λίστα size, isempty 1 1 atrank, rankof, elematrank 1 n first, last, before, after 1 1 replaceelement, swapelements 1 1 replaceatrank 1 n insertatrank, removeatrank n n insertfirst, insertlast 1 1 insertafter, insertbefore n 1 remove n 1 Λίστες και ακολουθίες 15

Iterators Ένας iterator αποτελεί µια γενίκευση της διαδικασία σαρώµατος µιας συλλογής στοιχείων Μέθοδοι του ΑΤ του ObjectIterator : object object() boolean hasnext() object nextobject() reset() Αποτελεί µια προέκταση της ιδέας της Θέσης προσθέτοντας µία δυνατότητα διάσχισης Υλοποίηση µε πίνακαήαπλά συνδεδεµένη λίστα Ένας iterator σχετίζεται τυπικά µε µία άλλη δοµή δεδοµένων Μπορούµε ναενδυναµώσουµε τον ΑΤ της στοίβας, της ουράς, του διανύσµατος, της λίστας και της ακολουθίας µε τηµέθοδο: ObjectIterator elements() ύο οπτικές του iterator: στιγµιότυπο: παγώνει τα περιεχόµενα της δοµής δεδοµένων σε µια δεδοµένη χρονική στιγµή δυναµικό: ακολουθεί τις αλλαγές στη δοµή δεδοµένων Λίστες και ακολουθίες 16