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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

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

Transcript

1 Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα ιοικητικής Επιστήµης & Τεχνολογίας ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Κεφάλαιο 9 οµές εδοµένων σε C Γιώργος Γιαγλής

2 Περίληψη Κεφαλαίου 9 οµές εδοµένων υναµικές οµές εδοµένων Λίστες ιάσχιση λίστας, Αναζήτηση στοιχείου σε λίστα, Εισαγωγή στοιχείου σε λίστα, ιαγραφή στοιχείου από λίστα, Άλλες µορφές λιστών Στοίβες Εισαγωγή στοιχείου σε στοίβα, Εξαγωγή στοιχείου από στοίβα, Υλοποίηση στοίβας µε πίνακα Ουρές Εισαγωγή στοιχείου σε ουρά, Εξαγωγή στοιχείου από ουρά, Υλοποίηση ουράς µε πίνακα ένδρα και Γράφοι Παράσταση δένδρων στη C, ιάσχιση δένδρου, υαδικά δένδρα αναζήτησης 2

3 υναµικές οµές εδοµένων Ως τώρα έχουµε συναντήσει δοµές δεδοµένων στις οποίες προκαθορίζεται το µέγεθος και πλήθος των στοιχείων- µεταβλητών Αποτέλεσµα Περιορισµένη χωρητικότητα των οµών εδοµένων, θα πρέπει το πρόγραµµα να ξαναγραφτεί στο µέλλον Υπερβολική και άσκοπη κατάληψη µνήµης από κενό πίνακα Αντιµετώπιση: υναµικές οµές εδοµένων Το µέγεθος τους αυξοµειώνεται ανάλογα µε τις ανάγκες, έτσι ώστε να χρησιµοποιεί πάντα ακριβώς το χώρο που τους είναι απαραίτητος (π.χ. ένας πίνακας για φοιτητές του ΟΠΑ, που το µέγεθος του να αυξάνεται κάθε φορά που ένας νέος φοιτητής εισάγεται στη βάση και να µειώνεται κάθε φορά που κάποιος διαγράφεται από αυτή ) Πώς; Με χρήση εικτών, επιτρέπουν την έµµεση αναφορά στη µνήµη του υπολογιστή Εφαρµογές Λίστες Στοίβες Ουρές

4 Λίστες Απλά Συνδεδεµένες υναµικές Λίστες Τι είναι; Μια συνεχόµενη αναπαράσταση στοιχείων( κόµβοι της λίστας) Κάθε κόµβος συνδέεται µε τον επόµενο µέσω µιας µεταβλητή δείκτη Παράδειγµα µιας απλής λίστας: Έχουµε 4 κόµβους Κάθε κόµβος αποτελείται από 2 µέρη: στο πρώτο αποθηκεύεται η πληροφορία που µας ενδιαφέρει το δεύτερο µέρος είναι ένας δείκτης στον επόµενο κόµβο της λίστας ΠΑΡΑΤΗΡΗΣΕΙΣ: η υλοποίηση ενός κόµβου λίστας στη C θα γίνεται µε µια δοµή (struct) αρχή της λίστας ορίζεται από µια µεταβλητή δείκτη που «δείχνει» στον πρώτο κόµβο ο δείκτης στον τελευταίο κόµβο της λίστας έχει µια ειδική τιµή (ονοµάζεται nil ή null) που ορίζει ότι ο δείκτης αυτός δε δείχνει πουθενά

5 Λίστες, ηµιουργία Λίστας ηµιουργία Λίστας Βήµα 1: Αρχική ήλωση Λίστας Ορίζουµε τον τύπο των κόµβων της Ορίζουµε µια µεταβλητή δείκτη σε έναν τέτοιο κόµβο struct Komvos { int Plhroforia; struct Komvos *next; }; struct Komvos *Lista; Κάθε κόµβου αποτελείται από ένα ακέραιο αριθµό Plhroforia και ένα δείκτη ο οποίος ονοµάζεται next και δείχνει σε µια δοµή τύπου Komvos Σχηµατικά: Βήµα 1: Αρχική ήλωση Λίστας Lista?

6 Λίστες, ηµιουργία Λίστας ηµιουργία Λίστας Βήµα 2: ηµιουργία Πρώτου κόµβου Χρήση συνάρτησης malloc: επιτρέπει τη δυναµική δέσµευση χώρου µνήµης για χρήση από κάποια µεταβλητή Μεταβλητή είκτη = (ΤύποςΚόµβου *) malloc(sizeof(τύπ οςκόµβου)); Σχηµατικά: Όρισµα το µέγεθος της δοµής στην οποία θα δηµιουργήσει ένα δείκτη [sizeof(τύποςκόµβου)] Επιστρέφει ένα δείκτη σε µια τέτοια δοµή, (ΤύποςΚόµβου *) της παραπάνω δήλωσης. Ο δείκτης αυτός εκχωρείται σε κάποια Μεταβλητή είκτη, η οποία έτσι «δείχνει» σε µια «νέα» περιοχή της µνήµης που έχει δεσµευτεί για αυτό το σκοπό. Βήµα 2: ηµιουργία Πρώτου κόµβου Μεταβλητή είκτη??

7 Λίστες, ηµιουργία Λίστας ηµιουργία Λίστας Βήµα 2: ηµιουργία Πρώτου κόµβου Χρήση συνάρτησης malloc: επιτρέπει τη δυναµική δέσµευση χώρου µνήµης για χρήση από κάποια µεταβλητή Μεταβλητή είκτη = (ΤύποςΚόµβου *) malloc(sizeof(τύπ οςκόµβου)); Όρισµα το µέγεθος της δοµής στην οποία θα δηµιουργήσει ένα δείκτη [sizeof(τύποςκόµβου)] Επιστρέφει ένα δείκτη σε µια τέτοια δοµή, (ΤύποςΚόµβου *) της παραπάνω δήλωσης. Ο δείκτης αυτός εκχωρείται σε κάποια Μεταβλητή είκτη, η οποία έτσι «δείχνει» σε µια «νέα» περιοχή της µνήµης που έχει δεσµευτεί για αυτό το σκοπό. Σχηµατικά: Βήµα 2: ηµιουργία Πρώτου κόµβου Μεταβλητή είκτη??

8 Λίστες, ηµιουργία Λίστας ηµιουργία Λίστας Βήµα 2: ηµιουργία Πρώτου κόµβου ΠΑΡΑΤΗΡΗΣΕΙΣ: η Μεταβλητή είκτη έχει αποκτήσει τιµή και δείχνει σε ένα νέο κόµβο. ηλαδή δεσµεύεται για πρώτη φορά στη µνήµη, όχι στη δήλωση, αλλά στη διάρκεια εκτέλεσης του προγράµµατος Τα περιεχόµενα του κόµβου είναι ακόµα αόριστα, αφού δεν έχει δοθεί κάποια αρχική τιµή σε αυτά Μεταβλητή του κόµβου αυτού δεν έχει κάποιο όνοµα. Ο µόνος τρόπος προσπέλασης της είναι µέσω κάποιου δείκτη που δείχνει σε αυτή (έµµεση αναφορά µνήµης)

9 Λίστες, ηµιουργία Λίστας ηµιουργία Λίστας Βήµα 3: ηµιουργία Κόµβου στον οποίο θα δείχνει η Lista Χρήση συνάρτησης malloc Lista = (struct Komvos *) malloc(sizeof(struct Komvos)); εσµεύεται στη µνήµη ελεύθερος χώρος ίσο µε το χώρο που απαιτείται για µια µεταβλητή δοµής τύπου Komvos ίνεται τιµή στη µεταβλητή Lista, η διεύθυνση του πρώτου byte αυτού του νέου χώρου µνήµης Σχηµατικά: Βήµα 3: ηµιουργία Κόµβου στον οποίο θα δείχνει η Lista Lista??? ΠΑΡΑΤΗΡΗΣΗ: Τα περιεχόµενα του κόµβου που δηµιουργήθηκε έχουν αόριστη τιµή

10 Λίστες, ηµιουργία Λίστας ηµιουργία Λίστας Βήµα 4: Απόδοση τιµών στα περιεχόµενα του νέου κόµβου Χρήση τελεστή -> Μεταβλητή είκτη -> ΌνοµαΠεδίου Lista -> Plhroforia = 1; Lista -> next = NULL; Απόδοση τιµών στα πεδία Plhroforia και next του κόµβου που δηµιουργήσαµε Σχηµατικά: Βήµα 4: Απόδοση τιµών στα περιεχόµενα του νέου κόµβου Lista 1

11 Λίστες, ηµιουργία Λίστας ηµιουργία Λίστας Βήµα 5: ηµιουργία επόµενου κόµβου Α τρόπος Lista = (struct Komvos *) malloc(sizeof(struct Komvos)); Lista -> Plhroforia = 2; Lista -> next = NULL; Σχηµατικά: ηµιουργείται νέος κόµβος, η εντολή Lista δείχνει σ αυτόν. Απόδοση τιµών στον κόµβο Βήµα 5: ηµιουργία επόµενου κόµβου (α τρόπος) Lista 1 2 Μειονέκτηµα εν µπορούµε πια να προσπελάσουµε τον πρώτο κόµβο Προτεινόµενη Λύση Να αποδώσουµε τιµή στη µεταβλητή Lista -> next του πρώτου κόµβου (β τρόπος)

12 Λίστες, ηµιουργία Λίστας ηµιουργία Λίστας Βήµα 5: ηµιουργία επόµενου κόµβου Β τρόπος Lista -> next = (struct Komvos *) malloc(sizeof(struct Komvos)); Lista -> next -> Plhroforia = 2; Lista -> next -> next = NULL; Απόδοση τιµής στη µεταβλητή Lista -> next του πρώτου κόµβου Σχηµατικά: Βήµα 5: ηµιουργία επόµενου κόµβου (β τρόπος) Lista 1 2 Μειονέκτηµα εν µπορεί να χρησιµοποιηθεί αποτελεσµατικά για τη δηµιουργία πολλών κόµβων (πχ αν είχαµε 100 κόµβους;) εν µπορεί να εκµεταλλευτεί τη δύναµη των εντολών επανάληψης Προτεινόµενη Λύση Χρήση µιας δεύτερης µεταβλητής δείκτη, έστω temp, που να δείχνει πάντα στον τελευταίο κόµβο της λίστας µας

13 Λίστες, ηµιουργία Λίστας ηµιουργία Λίστας Βήµα 5: ηµιουργία επόµενου κόµβου Γ τρόπος Komvos *temp; temp = (struct Komvos *) malloc(sizeof(struct Komvos)); temp -> Plhroforia = 2; temp -> next = NULL; Lista -> next = temp; 1) Ορίζει µια µεταβλητή δείκτη σε κόµβο µε το όνοµα temp 2) ηµιουργεί ένα νέο κόµβο στον οποίο θα δείχνει η temp 3)Αποδίδει περιεχόµενα κόµβο στον οποίο δείχνει η temp 4) Συνδέει τους δυο κόµβους µέσω απόδοσης τιµής στη µεταβλητή Lista -> next έτσι ώστε αυτή να δείχνει στον ίδιο κόµβο που δείχνει και η temp Προτεινόµενος τρόπος: γ τρόπος δηµιουργεί µια λίστα µε δυο κόµβους µέσω της µεταβλητής temp µπορούµε πια να ορίσουµε και τους υπόλοιπους κόµβους µε µια εντολή επανάληψης χωρίς να χρειαστεί να ξαναπειράξουµε την αρχική µεταβλητή Lista

14 Λίστες, ηµιουργία Λίστας ηµιουργία Λίστας Βήµα 5: ηµιουργία επόµενου κόµβου (γ τρόπος) Σχηµατικά Lista 1 Lista 1 temp? temp?? Lista 1 Lista 1 temp 2 temp 2 14

15 Λίστες, ιάσχιση Λίστας Η Λίστα είναι µια µορφή δυναµικής δοµής δεδοµένων Η δυναµική διαχείριση µνήµης δηµιουργεί δυσκολίες στον τρόπο άµεσης αναφοράς στα περιεχόµενα της λίστας. ηλαδή µόνο ο πρώτος κόµβος µπορεί να προσπελαστεί άµεσα. Για να προσπελαστεί ο κόµβος που επιθυµούµε, πρέπει να προσπελαστούν και όλοι οι προηγούµενοι του 15

16 Λίστες, ιάσχιση Λίστας Αλγόριθµος ιάσχισης Λίστας 1. Ορίζουµε µια βοηθητική µεταβλητή δείκτη, έστω temp(απαραίτητη για να διασχίσουµε τη λίστα χωρίς να αλλάξουµε τα περιεχόµενα της µεταβλητής Lista) 2. Μετακινούµαστε από κόµβο σε κόµβο µέσω της µεταβλητής temp->next, η οποία δείχνει πάντα στον επόµενο κόµβο της λίστας 3. Η διάσχιση τελειώνει όταν η µεταβλητή temp->next έχει τιµή NULL(τέλος λίστας) ή όταν βρεθεί το ζητούµενο στοιχείο ΠΡΟΣΟΧΗ: Οριακές περιπτώσεις Άδεια δοµή (δείτε το παράδειγµα που ακολουθεί) Γεµάτη οµή Η δραστηριότητα που θέλουµε να επιτελέσουµε πρέπει να γίνει στον πρώτο κόµβο (δείτε το παράδειγµα δηµιουργίας της λίστας, όπου ο πρώτος κόµβος δηµιουργείται διαφορετικά από τους υπόλοιπους) Η δραστηριότητα που θέλουµε να επιτελέσουµε πρέπει να γίνει στον τελευταίο κόµβο 16

17 Λίστες, ιάσχιση Λίστας Αλγόριθµος ιάσχισης Λίστας temp = Lista; /* αρχικοποίηση µεταβλητής temp */ if (temp == NULL) /* αν η λίστα είναι κενή */ printf( Κενή Λίστα! ) else do printf( %d, temp -> Plhroforia); /* εκτύπωση τιµής κάθε κόµβου */ temp = temp -> next; /* µετακίνηση στον επόµενο κόµβο */ while (temp!= NULL); /* όσο υπάρχουν ακόµα επόµενοι κόµβοι */ temp = Lista; /* αρχικοποίηση µεταβλητής temp */ if (temp == NULL) /* αν η λίστα είναι κενή */ printf( Κενή Λίστα! ) else do printf( %d, temp -> Plhroforia); /* εκτύπωση τιµής κάθε κόµβου */ temp = temp -> next; /* µετακίνηση στον επόµενο κόµβο */ while (temp!= NULL); /* όσο υπάρχουν ακόµα επόµενοι κόµβοι */ 17

18 Λίστες, ιάσχιση Λίστας Εναλλακτικός Αλγόριθµος ιάσχισης Λίστας temp = Lista; /* αρχικοποίηση µεταβλητής temp */ while (temp!= NULL) /* όσο η λίστα δεν είναι κενή */ {printf( %d, temp -> Plhroforia); /* εκτύπωση τιµής κάθε κόµβου */ temp = temp -> next; /* µετακίνηση στον επόµενο κόµβο */ } ΜΕΙΟΝΕΚΤΗΜΑ εν τυπώνει τίποτα σε περίπτωση που η λίστα είναι κενή 18

19 Λίστες, Αναζήτηση Στοιχείου σε Λίστα Στις Λίστες µπορούµε να εφαρµόσουµε ΜΟΝΟ Γραµµική Αναζήτηση Αλγόριθµος παρόµοιος µε αλγόριθµο διάσχισης Παράδειγµα αλγορίθµου Αναζήτησης σε µη ταξινοµηµένη λίστα Αναζήτηση στοιχείου µε τιµή Stoxos (βοηθητική ακέραια µεταβλητή Vrethike (true) αν το στοιχείο βρεθεί και (false) διαφορετικά) temp = Lista; /* αρχικοποίηση µεταβλητής temp */ Vrethike = 0; /* αρχικοποίηση µεταβλητής: το στοιχείο δεν έχει βρεθεί */ while ((temp!=null) && (!Vrethike)) /* όσο δεν τέλειωσε η λίστα και δεν έχει βρεθεί */ if (temp -> Plhroforia == Stoxos) /* αν το στοιχείο βρεθεί */ Vrethike = 1; if (Vrethike) /* αν η επανάληψη τελειώσει επειδή το στοιχείο βρέθηκε */ printf( Το στοιχείο υπάρχει στη λίστα ) else /* αν η επανάληψη τελειώσει επειδή η λίστα εξαντλήθηκε */ printf( Το στοιχείο δεν υπάρχει στη λίστα ); 19

20 Λίστες, Αναζήτηση Στοιχείου σε Λίστα Παράδειγµα αλγορίθµου Αναζήτησης σε ταξινοµηµένη λίστα Αναζήτηση στοιχείου µε τιµή Stoxos Ο Αλγόριθµος τερµατίζει αν βρεθεί στοιχείο µε µεγαλύτερη τιµή από το ζητούµενο temp = Lista; /* αρχικοποίηση µεταβλητής temp */ Vrethike = 0; /* αρχικοποίηση µεταβλητής: το στοιχείο δεν έχει βρεθεί */ while ((temp!=null) && (!Vrethike)) /* όσο δεν τέλειωσε η λίστα και δεν έχει βρεθεί */ if (temp -> Plhroforia == Stoxos) /* αν το στοιχείο βρεθεί */ Vrethike = 1 else if (temp -> Plhroforia > Stoxos) /* αν ξεπεράσαµε την τιµήστόχο */ temp = NULL; /* αναγκάζουµε την επανάληψη να τελειώσει */ if (Vrethike) /* αν η επανάληψη τελειώσει επειδή το στοιχείο βρέθηκε */ printf( Το στοιχείο υπάρχει στη λίστα ) else /* αν η επανάληψη τελειώσει επειδή η λίστα εξαντλήθηκε */ printf( Το στοιχείο δεν υπάρχει στη λίστα ); 20

21 Λίστες, Εισαγωγή στοιχείου σε λίστα Αλγόριθµος εισαγωγής στοιχείου Στην αρχή µη ταξινοµηµένης λίστας Στο τέλος µη ταξινοµηµένης λίστας Σε ταξινοµηµένη λίστα (παραµένει ταξινοµηµένη και µετά την εισαγωγή) 21

22 Λίστες, Εισαγωγή στοιχείου σε λίστα Εισαγωγή στοιχείου στην αρχή µη ταξινοµηµένης Λίστας - Παράδειγµα 1. ηµιουργία κόµβου µε τη συνάρτηση malloc 2. Ο δείκτης next του κόµβου αυτού να δείχνει εκεί που δείχνει αρχικά ο δείκτης Lista 3. Ο δείκτης Lista δείχνει στο νέο κόµβο 4. Ονοµάζουµε το νέο κόµβο Neos και έστω x το στοιχείο (πληροφορία) που θέλουµε να εισάγουµε Neos = (struct Komvos *) malloc(sizeof(struct Komvos)); /* δηµιουργία κόµβου */ Neos -> Plhroforia = x; /* απόδοση τιµής στο νέο κόµβο */ Neos -> next = Lista; /* ο νέος κόµβος δείχνει στην προηγούµενη αρχή της λίστας */ Lista = Neos; /* η λίστα ξεκινάει πια από το νέο κόµβο */ 22

23 Λίστες, Εισαγωγή στοιχείου σε λίστα Εισαγωγή στοιχείου στο τέλος µη ταξινοµηµένης Λίστας - Παράδειγµα 1. ηµιουργία κόµβου µε τη συνάρτηση malloc 2. ιάσχιση της υπάρχουσας λίστας 3. Ο δείκτης next του τελευταίου κόµβου να δείχνει στο νέο κόµβο Neos = (struct Komvos *) malloc(sizeof(struct Komvos)); /* δηµιουργία κόµβου */ Neos -> Plhroforia = x; /* απόδοση τιµής στο νέο κόµβο */ Neos -> next = NULL; /* ο νέος κόµβος δε δείχνει πουθενά */ if (Lista == NULL) /* αν η λίστα ήταν αρχικά άδεια */ Lista = Neos; /* η λίστα θα δείχνει στο νέο κόµβο */ else {temp = Lista; /* βοηθητική µεταβλητή διάσχισης της λίστας */ while (temp -> next!= NULL) /* µέχρι να τελειώσει η λίστα */ temp = temp -> next; /* προχωράµε στον επόµενο κόµβο */ temp -> next = Neos; /* ο τελευταίος κόµβος θα δείχνει στο νέο */ } 23

24 Λίστες, Εισαγωγή στοιχείου σε λίστα Εισαγωγή στοιχείου σε ταξινοµηµένη λίστα- Παράδειγµα 1. ηµιουργία κόµβου µε τη συνάρτηση malloc 2. ιάσχιση της υπάρχουσας λίστας µέχρι να βρούµε τη σωστή θέση εισαγωγής του νέου κόµβου 3. Ενηµέρωση δυο δεικτών: το δείκτη next του προηγούµενου κόµβου της λίστας να δείχνει στο νέο κόµβο και το δείκτη next του νέου κόµβου να δείχνει στον επόµενο 24

25 Λίστες, Εισαγωγή στοιχείου σε λίστα Εισαγωγή στοιχείου σε ταξινοµηµένη λίστα- Παράδειγµα Neos = (struct Komvos *) malloc(sizeof(struct Komvos)); /* δηµιουργία κόµβου */ Neos -> Plhroforia = x; /* απόδοση τιµής στο νέο κόµβο */ if (Lista == NULL) /* αν η λίστα ήταν αρχικά άδεια */ {Lista = Neos; /* η λίστα θα δείχνει στο νέο κόµβο */ Neos -> next = NULL; /* ο νέος κόµβος δε θα δείχνει πουθενά */ else {temp = Lista; /* βοηθητική µεταβλητή διάσχισης της λίστας */ previous = NULL; /* βοηθητική µεταβλητή που δείχνει τον προηγούµενο κόµβο */ while ((temp!=null) && (temp -> Plhroforia < x)) /* µέχρι να τελειώσει η λίστα ή να βρεθεί η σωστή θέση */ {previous = temp; /* προχώρησε τον προηγούµενο κόµβο µια θέση */ temp = temp -> next; /* προχώρησε τον τρέχοντα κόµβο µια θέση */ } previous -> next = Neos; /* ο δείκτης next του προηγούµενου κόµβου δείχνει το νέο */ Neos -> next = temp; /* ο δείκτης next του νέου κόµβου δείχνει τον επόµενο */ } 25

26 Λίστες, ιαγραφή στοιχείου από λίστα ιαγραφή = Απελευθέρωση µνήµης Γίνεται µε χρήση της συνάρτησης free (ουσιαστικά αντίθετη της malloc) free(μεταβλητή είκτη); Αλγόριθµος ιαγραφής 1. διασχίζει πρώτα τη λίστα µέχρι να βρει τον κόµβο προς διαγραφή 2. ενηµερώνει το δείκτη next του προηγούµενου κόµβου ώστε να δείχνει προς τον επόµενο 3. απελευθερώνει το χώρο µνήµης του διαγραφέντος κόµβου ΠΡΙΝ: Lista ΜΕΤΑ: Lista

27 Λίστες, ιαγραφή στοιχείου από λίστα Αλγόριθµος ιαγραφής - Παράδειγµα if (Lista == NULL) /* αν η λίστα είναι άδεια */ printf( εν µπορεί να γίνει διαγραφή ); else if (Lista -> Plhroforia == x) /* αν το ζητούµενο στοιχείο είναι το πρώτο */ {temp = Lista; /* ο τρέχων κόµβος είναι ο πρώτος */ Lista = Lista -> next; /* η λίστα ξεκινάει από τον επόµενο κόµβο */ free(temp); /* απελευθερώνεται η µνήµη του τρέχοντος κόµβου */ } else {temp = Lista; /* βοηθητική µεταβλητή διάσχισης της λίστας */ previous = NULL; /* βοηθητική µεταβλητή που δείχνει τον προηγούµενο κόµβο */ while ((temp!=null) && (temp -> Plhroforia!= x)) /* µέχρι να τελειώσει η λίστα ή να βρεθεί ο κόµβος */ {previous = temp; /* προχώρησε τον προηγούµενο κόµβο µια θέση */ temp = temp -> next; /* προχώρησε τον τρέχοντα κόµβο µια θέση */ } if (temp!=null) /* αν το στοιχείο βρέθηκε */ {previous->next = temp->next; /* ο δείκτης του προηγούµενου δείχνει το επόµενο */ free(temp); /* απελευθερώνεται η µνήµη του τρέχοντος κόµβου */ } else /* αν το στοιχείο προς διαγραφή δεν υπάρχει */ printf( Το στοιχείο δεν υπάρχει στη λίστα ); 27 }

28 Λίστες, Άλλες Μορφές Λίστας Απλά συνδεδεµένες Λίστες: κάθε κόµβος συνδέεται µόνο µε τον επόµενο του (όσες είδαµε έως τώρα) ιπλά συνδεδεµένες Λίστες: κάθε κόµβος αποτελείται από τρία στοιχεία: την πληροφορία, ένα δείκτη στον επόµενο κόµβο και ένα δείκτη στον προηγούµενο κόµβο DiplhLista Κυκλικές Λίστες: ίδιες µε απλά συνδεδεµένες ΑΛΛΑ ο δείκτης επόµενου του τελευταίου κόµβου δείχνει πίσω στον πρώτο κόµβο της λίστας Kyklikh Lista

29 Στοίβες Στοίβα (stack): ειδική µορφή λίστας, τα στοιχεία εισάγονται και εξάγονται µόνο από το ένα άκρο της (κορυφή της στοίβας) Το τελευταίο στοιχείο που µπαίνει στη στοίβα βγαίνει πρώτο οµή LIFO, Last In First Out Παραδείγµατα στο φυσικό κόσµο: Μια στοίβα πιάτα Είσοδος αυτοκινήτων σε γκαράζ πλοίων 29

30 Στοίβες, Ορισµός Στοίβας Σχηµατική Αναπαράσταση Στοίβας ΑΝΑΠΑΡΑΣΤΑΣΗ Stoiva ΕΙΣΑΓΩΓΗ ΣΤΟΙΧΕΙΟΥ Stoiva ΕΞΑΓΩΓΗ ΣΤΟΙΧΕΙΟΥ Stoiva

31 Στοίβες, Ορισµός Στοίβας Ορισµός Στοίβας σε C /* ορισµός δοµής για τους κόµβους της στοίβας */ struct KomvosStoivas { int Plhroforia; struct KomvosStoivas *next; }; /* ορισµός µεταβλητής που θα δείχνει πάντα την κορυφή της στοίβας */ struct KomvosStoivas *Stoiva; /* απόδοση αρχικής τιµής στην (αρχικά άδεια) στοίβα */ Stoiva = NULL; 31

32 Στοίβες, Εισαγωγή στοιχείου σε Στοίβα Εισαγωγή στοιχείου σε στοίβα 1. Χρήση malloc για δηµιουργία ο νέου κόµβου µε την προς εισαγωγή πληροφορία 2. Απόδοση στο δείκτη next του κόµβου αυτού της τιµής του δείκτη της στοίβας 3. Αλλάγή της τιµή του δείκτη της στοίβας ώστε να δείχνει στο νέο κόµβο /* δηµιουργία κόµβου */ Neos = (struct KomvosStoivas *) malloc(sizeof(struct KomvosStoivas)); Neos -> Plhroforia = x; /* απόδοση τιµής στο νέο κόµβο */ Neos -> next = Stoiva; /* ο δείκτης next του νέου κόµβου δείχνει στην παλιά κορυφή */ Stoiva = Neos; /* η στοίβα τώρα ξεκινάει από το νέο κόµβο */ 32

33 Στοίβες, Εξαγωγή στοιχείου από Στοίβα Εξαγωγή στοιχείου από Λίστα 1. Ανάκληση η πληροφορίας του αρχικού κόµβου 2. Αλλαγή της τιµής του δείκτη της στοίβας ώστε να δείχνει εκεί που έδειχνε η παλιά κορυφή της 3. Απελευθέρωση της µνήµης που καταλάµβανε η παλιά κορυφή Οριακή περίπτωση: άδεια στοίβα if (Stoiva == NULL) printf( Στοίβα άδεια. εν µπορεί να γίνει διαγραφή ); else {temp = Stoiva; /* προσωρινός κόµβος που θα απελευθερωθεί */ x = Stoiva -> Plhroforia; /* ανάκληση τιµής που θα εξαχθεί */ Stoiva = Stoiva -> next; /* αλλαγή τιµής στην κορυφή της στοίβας */ free(temp); /* απελευθέρωση µνήµης του προσωρινού κόµβου */ } 33

34 Στοίβες, Υλοποίηση Στοίβας µε Πίνακα Η Στοίβα µπορεί να υλοποιηθεί ΚΑΙ µε στατικό τρόπο, δηλαδή µε Πίνακα Τότε η στοίβα αποτελείται από δυο µεταβλητές ένα πίνακα Ν θέσεων στον οποίο αποθηκεύονται τα στοιχεία της στοίβας µια ακέραια µεταβλητή η οποία αναπαριστά την κορυφή της στοίβας (δείχνει πόσα στοιχεία έχει η στοίβα) Υλοποίηση Στοίβας µε Πίνακα µπορεί να γίνει µε πολλούς τρόπους Ένας από αυτούς: η κορυφή να δείχνει πάντα στην πρώτη ελεύθερη θέση (δηλαδή µετά το τελευταίο στοιχείο) Πλεονέκτηµα Στατικής Στοίβας Ευκολότερη υλοποίηση περισσότερων πράξεων Μειονέκτηµα Στατικής Στοίβας Μειονέκτηµα στατικών δοµών, σταθερό µέγεθος 34

35 Στοίβες, Υλοποίηση Στοίβας µε Πίνακα Σχηµατική Απεικόνιση Στατικής Λίστας ΑΝΑΠΑΡΑΣΤΑΣΗ Stoiva top ΕΙΣΑΓΩΓΗ ΣΤΟΙΧΕΙΟΥ Stoiva top ΕΞΑΓΩΓΗ ΣΤΟΙΧΕΙΟΥ Stoiva top 35

36 Στοίβες, Υλοποίηση Στοίβας µε Πίνακα Ορισµός Στατικής Στοίβας σε C /* ορισµός δοµής που οµαδοποιεί τον πίνακα και το δείκτη κορυφής της στοίβας */ struct StatikiStoiva { int Plhroforia[N]; int top; }; /* ορισµός µεταβλητής για τη στοίβα */ struct StatikiStoiva Stoiva; /* απόδοση αρχικής τιµής στην (αρχικά άδεια) στοίβα */ Stoiva.top = 0; ΠΡΟΣΟΧΗ Η οµαδοποίηση του πίνακα Plhroforia και του δείκτη top σε µια δοµή είναι προαιρετική Χρήσιµη όταν σε ένα πρόγραµµα υπάρχουν περισσότερες από µια στοίβες, ιευκολύνει τον ορισµό και τη διαχείριση τους µέσω δοµών. είκτης top µε τιµή 0 δηλώνει ότι η στοίβα αρχικά είναι κενή από στοιχεία 36

37 Στοίβες, Υλοποίηση Στοίβας µε Πίνακα Εισαγωγή Στοιχείου Αυξάνοντας το δείκτη top κατά ένα Εισάγοντας το νέο στοιχείο x στη θέση αυτή του πίνακα ΠΡΟΣΟΧΗ: Έλεγχος αν η Στοίβα είναι ήδη γεµάτη (δε χρειάζεται στην περίπτωση δυναµικής υλοποίησης) if (Stoiva.top == N) /* αν η στοίβα έχει ήδη Ν στοιχεία */ printf( Η στοίβα είναι γεµάτη. εν µπορεί να γίνει εισαγωγή ); else {Stoiva.Plhroforia[top]=x; /* προσέξτε ότι ο δείκτης top παίρνει τιµές από 0 ως Ν-1 */ Stoiva.top++; /* αύξηση δείκτη κορυφής */ } 37

38 Στοίβες, Υλοποίηση Στοίβας µε Πίνακα Εξαγωγή Στοιχείου Ανάκληση της πληροφορία που βρίσκεται στην κορυφή της στοίβας Μειώνοντας του δείκτη top κατά ένα ΠΡΟΣΟΧΗ: το στοιχείο στην πραγµατικότητα δε διαγράφεται από τον πίνακα, απλά µαρκάρεται η θέση του ως ελεύθερη αλλάζοντας την τιµή του δείκτη top Έλεγχος αν η Στοίβα είναι άδεια if (Stoiva.top == 0) /* αν η στοίβα δεν έχει στοιχεία */ printf( Η στοίβα είναι άδεια. εν µπορεί να γίνει εξαγωγή ); else {Stoiva.top--; /* µείωση δείκτη κορυφής */ x=stoiva.plhroforia[top]; /* προσέξτε ότι ο δείκτης top παίρνει τιµές από 0 ως Ν-1 */ } 38

39 Ουρές Ουρά (queue): ειδική µορφή λίστας, τα στοιχεία εισάγονται από το ένα άκρο και εξάγονται από το άλλο. Κάθε νέο στοιχείο εισάγεται στο τέλος ενώ κάθε στοιχείο εξέρχεται από την αρχή της ουράς οµή FIFO, Fast In First Out Παράδειγµα στο φυσικό κόσµο: Ουρά πελατών µε µια τράπεζα Συνήθως έχει τη µορφή µιας απλά συνδεδεµένης λίστας µε ένα επιπλέον δείκτη που δείχνει κάθε φορά στο τελευταίο στοιχείο της 39

40 Ουρές, Ορισµός Ουράς Σχηµατική Αναπαράσταση Ουράς Telos ΑΝΑΠΑΡΑΣΤΑΣΗ Arxh Telos ΕΙΣΑΓΩΓΗ ΣΤΟΙΧΕΙΟΥ Arxh ΕΞΑΓΩΓΗ ΣΤΟΙΧΕΙΟΥ Arxh Telos

41 Ουρές, Ορισµός Ουράς Ορισµός Ουράς σε C /* ορισµός δοµής για τους κόµβους της ουράς */ struct KomvosOuras { int Plhroforia; struct KomvosOuras *next; }; /* ορισµός µεταβλητών που θα δείχνουν στην αρχή και το τέλος της ουράς */ struct KomvosOuras *Arxh, *Telos; /* απόδοση αρχικών τιµών στην (αρχικά άδεια) ουρά */ Arxh = NULL; Telos = NULL; 41

42 Ουρές, Εισαγωγή στοιχείου σε Ουρά Εισαγωγή στοιχείου σε Ουρά Η εισαγωγή γίνεται πάντα µετά το δείκτη Telos 1. Χρήση malloc για δηµιουργία ο νέου κόµβου µε την προς εισαγωγή πληροφορία (ο οποίος δε θα δείχνει πουθενά) 2. Αλλαγή του δείκτη next του τελευταίου κόµβου ώστε να δείχνει στο νέο 3. Αλλαγή της τιµή του δείκτη Telos ώστε να δείχνει στο νέο κόµβο /* δηµιουργία κόµβου */ Neos = (struct KomvosOuras *) malloc(sizeof(struct KomvosOuras)); Neos -> Plhroforia = x; /* απόδοση τιµής στο νέο κόµβο */ Neos -> next = NULL; /* ο νέος κόµβος δε δείχνει πουθενά */ if (Telos!= NULL) /* αν η ουρά δεν είναι άδεια */ Telos -> next = Neos; /* ο προηγούµενος τελευταίος κόµβος δείχνει το νέο κόµβο */ Telos = Neos; /* ο δείκτης τέλους δείχνει το νέο κόµβο */ if (Arxh == NULL) /* αν η ουρά ήταν άδεια) Arxh = Neos; /* ο δείκτης αρχής δείχνει το νέο κόµβο */ 42

43 Ουρές, Εξαγωγή στοιχείου από Ουρές Εξαγωγή στοιχείου από Ουρά (γίνεται από την κορυφή της ουράς) 1. Ανάκληση η πληροφορίας του αρχικού κόµβου 2. Αλλαγή της τιµής του δείκτη αρχής ώστε να δείχνει εκεί που έδειχνε ο παλιός δείκτης αρχής 3. Απελευθέρωση της µνήµης που καταλάµβανε ο παλιός αρχικός κόµβος Οριακή περίπτωση: Η ουρά είναι άδεια ή αδειάζει µετά τη διαγραφή. Πρέπει να ενηµερωθεί ο δείκτης Τέλους if Arxh == NULL printf( Ουρά άδεια. εν µπορεί να γίνει διαγραφή ); else {temp = Arxh; /* προσωρινός κόµβος που θα απελευθερωθεί */ x = Arxh -> Plhroforia; /* ανάκληση τιµής που θα εξαχθεί */ Arxh = Arxh -> next; /* αλλαγή τιµής στην κορυφή της ουράς */ if (Arxh == NULL) /* αν η ουρά άδειασε µετά τη διαγραφή */ Telos = NULL; /* ενηµέρωση του δείκτη τέλους */ free(temp); /* απελευθέρωση µνήµης του προσωρινού κόµβου */ } 43

44 Ουρές, Υλοποίηση Ουράς µε Πίνακα Η Ουρά µπορεί να υλοποιηθεί ΚΑΙ µε στατικό τρόπο, δηλαδή µε Πίνακα Τότε η ουρά αποτελείται από τρεις µεταβλητές ένα πίνακα Ν θέσεων στον οποίο αποθηκεύονται τα στοιχεία της ουράς δυο ακέραιες µεταβλητές οι οποίες αναπαριστούν την αρχή και το τέλος της ουράς Υλοποίηση Ουράς µε Πίνακα µπορεί να γίνει µε πολλούς τρόπους Ένας από αυτούς: Ο δείκτης αρχής να δείχνει πάντα στο πρώτο στοιχείο και ο δείκτης τέλους στην πρώτη ελεύθερη θέση (δηλαδή µετά το τελευταίο στοιχείο) Πλεονέκτηµα Στατικής Στοίβας Ευκολότερη υλοποίηση περισσότερων πράξεων Μειονέκτηµα Στατικής Στοίβας Μειονέκτηµα στατικών δοµών, σταθερό µέγεθος 44

45 Ουρές, Υλοποίηση Ουράς µε Πίνακα Σχηµατική Απεικόνιση Στατικής Ουράς ΑΝΑΠΑΡΑΣΤΑΣΗ Oura Arxh Telos ΕΙΣΑΓΩΓΗ ΣΤΟΙΧΕΙΟΥ Oura Arxh 4 Telos ΕΞΑΓΩΓΗ ΣΤΟΙΧΕΙΟΥ Oura Arxh 4 Telos 45

46 Ουρές, Υλοποίηση Ουράς µε Πίνακα Ορισµός Στατικής Ουράς σε C /* ορισµός δοµής για τα στοιχεία της στατικής ουράς */ struct StatikiOura { int Plhroforia[N]; int Arxh; int Telos; }; /* ορισµός µεταβλητής για την ουρά */ struct StatikiOura Oura; /* απόδοση αρχικών τιµών στα στοιχεία της (αρχικά άδειας) ουράς */ Oura.Arxh = 0; Oura.Telos = 0; 46

47 Ουρές, Υλοποίηση Ουράς µε Πίνακα Εισαγωγή Στοιχείου Εισάγοντας το νέο στοιχείο x στη θέση του πίνακα που δείχνει ο δείκτης τέλους Αυξάνοντας το δείκτη Telos κατά ένα ΠΡΟΣΟΧΗ: Έλεγχος αν η Όυρά είναι ήδη γεµάτη Όταν ο δείκτης τέλους φτάσει στο τέλος του πίνακα, να ελέγχεται αν υπάρχουν άδειες θέσεις και να µετακινούνται όλα τα στοιχεία µπροστά (αλλιώς θα υπάρχουν άδειες θέσεις και δεν θα µπορούν να γίνουν εισαγωγές) if (Oura.Telos < N) /* αν το στοιχείο χωράει στο τέλος του πίνακα */ {Oura.Plhroforia[Telos]=x; /* το νέο στοιχείο εισάγεται στο τέλος */ Oura.Telos++; /* αύξηση δείκτη τέλους */ } else /* αν ο δείκτης τέλους έχει φτάσει στο τέλος του πίνακα */ if (Oura.Arxh == 0) /* αν ο δείκτης αρχής βρίσκεται στην αρχή */ printf( Η ουρά είναι γεµάτη. εν µπορεί να γίνει εισαγωγή ); else /* πρέπει να γίνει µετακίνηση στοιχείων */ {StoixeiaOuras = Telos - Arxh; /* πόσα στοιχεία πρέπει να µετακινηθούν */ for (i=arxh;i>0;i--) /* µετακίνηση */ for (k=1;k<=stoixeiaouras;k++) /* >> */ Oura.Plhroforia[i+k-2]=Oura.Plhroforia[i+k-1]; /* >> */ Arxh = 0; /* ενηµέρωση νέου δείκτη αρχής */ 47

48 Ουρές, Υλοποίηση Ουράς µε Πίνακα Εξαγωγή Στοιχείου Ανάκληση της πληροφορία που βρίσκεται στην αρχή της ουράς Αυξάνοντας το δείκτη Arxh κατά ένα ΠΡΟΣΟΧΗ: Έλεγχος αν η Στοίβα είναι άδεια ή αν αδειάσει µετά την εξαγωγή if (Oura.Telos == 0) /* αν η ουρά δεν έχει στοιχεία */ printf( Η ουρά είναι άδεια. εν µπορεί να γίνει εξαγωγή ); else {x=oura.plhroforia[arxh]; /* εξαγωγή του πρώτου στοιχείου */ Oura.Arxh++; /* αύξηση δείκτη αρχής */ if (Oura.Arxh == Oura.Telos) /* αν µετά την εξαγωγή η ουρά άδειασε */ {Oura.Arxh = 0; /* ενηµέρωση δεικτών */ Oura.Telos = 0; /* >> >> */ } } 48

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

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται

Διαβάστε περισσότερα

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

Βασικές οµές εδοµένων Βασικές οµές εδοµένων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Αφηρηµένοι Τύποι εδοµένων Οι ΑΤ Στοίβα και Ουρά Υλοποίηση των ΑΤ Στοίβα και Ουρά µε ιαδοχική και υναµική Χορήγηση Μνήµης

Διαβάστε περισσότερα

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

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας ΚΕΦΑΛΑΙΟ 8: Αφηρηµένοι τύποι δεδοµένων 8.1 οµές δεδοµένων (data structures) 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας Αδόµητα δεδοµένα οδός Ζέας

Διαβάστε περισσότερα

Προγραµµατισµός Ι (ΗΥ120)

Προγραµµατισµός Ι (ΗΥ120) Προγραµµατισµός Ι (ΗΥ120) Διάλεξη 15: Διασυνδεµένες Δοµές - Λίστες Δοµές δεδοµένων! Ένα τυπικό πρόγραµµα επεξεργάζεται δεδοµένα Πώς θα τα διατάξουµε? 2 Τι λειτουργίες θέλουµε να εκτελέσουµε? Πώς θα υλοποιήσουµε

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα ιοικητικής Επιστήµης & Τεχνολογίας ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Κεφάλαιο 8 Προχωρηµένα Θέµατα Προγραµµατισµού C Γιώργος Γιαγλής Περίληψη Κεφαλαίου 8 Προχωρηµένα

Διαβάστε περισσότερα

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

Στοίβες με Δυναμική Δέσμευση Μνήμης ΕΠΛ 231 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ 10/02/10 Παύλος Αντωνίου Στοίβες με Δυναμική Δέσμευση Μνήμης Στοίβα: Στοίβα είναι μια λίστα που έχει ένα επιπλέον περιορισμό. Ο περιορισμός είναι ότι οι εισαγωγές

Διαβάστε περισσότερα

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

Επιµέλεια Θοδωρής Πιερράτος εδοµένα οµές δεδοµένων και αλγόριθµοι Τα δεδοµένα είναι ακατέργαστα γεγονότα. Η συλλογή των ακατέργαστων δεδοµένων και ο συσχετισµός τους δίνει ως αποτέλεσµα την πληροφορία. Η µέτρηση, η κωδικοποίηση,

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί

Διαβάστε περισσότερα

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

υναµικές οµές εδοµένων υναµικές οµές εδοµένων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: υναµικές οµές εδοµένων Γενικά υναµική έσµευση Μνήµης οµή τύπου structure αυτοαναφορικές δοµές Η δήλωση typedef στη C Αναπαράσταση

Διαβάστε περισσότερα

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

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά ΕΠΛ231 Δομές Δεδομένων

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Συλλογές, Στοίβες και Ουρές Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση οποιουδήποτε στοιχείου. Συλλογή (bag) : Επιστρέφει

Διαβάστε περισσότερα

διεύθυνση πρώτου στοιχείου διεύθυνση i-οστού στοιχείου T t[n]; &t[0] είναι t &t[i] είναι t + i*sizeof(t)

διεύθυνση πρώτου στοιχείου διεύθυνση i-οστού στοιχείου T t[n]; &t[0] είναι t &t[i] είναι t + i*sizeof(t) Προγραµµατισµός Ι (ΗΥ120) ιάλεξη 18: ιασυνδεµένες οµές - Λίστες ιασυνδεδεµένες δοµές δεδοµένων Η µνήµη ενός πίνακα δεσµεύεται συνεχόµενα. Η πρόσβαση στο i-οστό στοιχείο είναι άµεσηκαθώς η διεύθυνση του

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 14 η Διαχείριση Μνήμης και Δομές Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη

Διαβάστε περισσότερα

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

#2 Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα #2 Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα ηµήτρης Ν. Σερπάνος Εργαστήριο Συστηµάτων Υπολογιστών Τµήµα Ηλεκτρολόγων Μηχ. & Τεχνολογίας Υπολογιστών Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα Αλγόριθµοι:

Διαβάστε περισσότερα

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

Βασικές Δομές Δεδομένων Βασικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Διαδοχική και Δυναμική Χορήγηση

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών Ακαδηµαϊκό έτος 2010 2011, Χειµερινό εξάµηνο Παρασκευή - 17/12/10 (08:30-11:30)

Διαβάστε περισσότερα

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 3ο: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΜΕΡΟΣ 2 ο : ΣΤΟΙΒΑ & ΟΥΡΑ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ ΣΤΟΙΒΑ 2 Μια στοίβα

Διαβάστε περισσότερα

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

ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Σχετικές έννοιες 8.3 Υλοποίηση δοµών δεδοµένων 8.4 Μια σύντοµη µελέτη περίπτωσης 8.5 Προσαρµοσµένοι τύποι δεδοµένων 1 Βασικές δοµές

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ιαφάνειες παρουσίασης #11 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ http://www.corelab.ece.ntua.gr/courses/programming/ ιδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } } Πανεπιστήµιο Ιωαννίνων, Τµήµα Πληροφορικής 2 Νοεµβρίου 2005 Η/Υ 432: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκού Έτους 2005-2006 Παναγιώτα Φατούρου Ηµεροµηνία Παράδοσης 1 ο Σετ Ασκήσεων Θεωρητικό Μέρος:

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 23: οµές εδοµένων και Αλγόριθµοι Ενδιάµεση Εξέταση Ηµεροµηνία : ευτέρα, 3 Νοεµβρίου 2008 ιάρκεια : 2.00-4.00 ιδάσκουσα : Άννα Φιλίππου Ονοµατεπώνυµο: ΣΚΕΛΕΤΟΙ

Διαβάστε περισσότερα

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 3 1. Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή 2. Δυναμικές είναι οι δομές που αποθηκεύονται σε συνεχόμενες θέσεις μνήμης 3. Ένας πίνακας

Διαβάστε περισσότερα

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Να γίνει περιγραφή της δομής δεδομένων Στοίβα. Στη δομή δεδομένων στοίβα τα δεδομένα στοιβάζονται το ένα πάνω στο άλλο. Σχηματικά οι λεπτομέρειες μιας δομής δεδομένων στοίβας μπορούν

Διαβάστε περισσότερα

υναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή

υναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή υναµική έσµευση Μνήµης (συν.) Στην ενότητα αυτή θα µελετηθούν: Μια εφαρµογή συνδεδεµένων λιστών ιπλά συνδεδεµένες Λίστες ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Εφαρµογή Ζητούµενο: Πρόγραµµα που παίρνει σαν

Διαβάστε περισσότερα

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο)

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο) ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο) Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου http://www.cs.ucy.ac.cy/courses/epl232 Το μάθημα αυτό

Διαβάστε περισσότερα

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 6: Διαχείριση Μνήμης & Δυναμικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυναμικές Δομές Δεδομένων Γενικά Δυναμική Δέσμευση/Αποδέσμευση Μνήμης Δομή τύπου structure

Διαβάστε περισσότερα

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

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 22: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης - Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου

Διαβάστε περισσότερα

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής Ενότητα 5: Δείκτες και Δυναμική Δέσμευση- Αποδέσμευση Μνήμης στη C/ Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με δείκτες /Ένα πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν

Διαβάστε περισσότερα

Ορισµοί κεφαλαίου. Σηµαντικά σηµεία κεφαλαίου

Ορισµοί κεφαλαίου. Σηµαντικά σηµεία κεφαλαίου Ορισµοί κεφαλαίου Τα δεδοµένα είναι η αφαιρετική αναπαράσταση της πραγµατικότητας και συνεπώς µια απλοποιηµένη όψη της οµή εδοµένων είναι ένα σύνολο αποθηκευµένων δεδοµένων που υφίστανται επεξεργασία από

Διαβάστε περισσότερα

FAIL PASS PASS οριακά

FAIL PASS PASS οριακά AEM 0001 0002 COMMENTS οριακά -Το πρόγραµµά σου δουλεύει λάθος για τις εισόδους: 7 -Δεν έχεις µεριµνήσει για την περίπτωση step=1. Μπορούσες να θεωρήσεις ειδική περίπτωση και να την υλοποιείς σε άλλον

Διαβάστε περισσότερα

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

Οι δομές δεδομένων στοίβα και ουρά Καθηγητής Πληροφορικής Απαγορεύεται η αναπαραγωγή των σημειώσεων χωρίς αναφορά στην πηγή Βίντεο: https://youtu.be/j8petzztqty Οι δομές δεδομένων στοίβα και ουρά Εισαγωγή Στα πλαίσια του μαθήματος της Ανάπτυξης

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 21/10/2016

Διαβάστε περισσότερα

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

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Λίστες -Υλοποίηση ταξινομημένης λίστας με δυναμική δέσμευση μνήμης ΕΠΛ035

Διαβάστε περισσότερα

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

υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Ταξινοµηµένες Λίστες µε δυναµική δέσµευση µνήµης Αναδροµκές συναρτήσεις ΕΠΛ 12 Αρχές Προγραµµατισµού ΙΙ 1 Λίστες

Διαβάστε περισσότερα

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

ιαφάνειες παρουσίασης #5 (β) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

Διαβάστε περισσότερα

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

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) - Σύγκριση Συνδεδεμένων Λιστών με Πίνακες

Διαβάστε περισσότερα

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

Σύνοψη Προηγούμενου. Λίστες (Lists) Συνδεδεμένες Λίστες: Εισαγωγή (1/2) Συνδεδεμένες Λίστες. Ορέστης Τελέλης Σύνοψη Προηγούμενου Λίστες (Lists) Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Στοίβες (Stacks) : στην κορυφή της στοίβας ( ) από την κορυφή της στοίβας ( ) Ουρές

Διαβάστε περισσότερα

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 00497 -Δεν ελέγχετε αν η createlist εκτελλέστικε σωστά και δεν τερµατίζετε το πρόγραµµα σε διαφορετική -Σωστά βρίσκετε το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος. -Σωστά τερµατίζετε

Διαβάστε περισσότερα

Προγραμματισμός Δομές Δεδομένων

Προγραμματισμός Δομές Δεδομένων Προγραμματισμός Δομές Δεδομένων Προγραμματισμός Δομές Δεδομένων (Data Structures) Καινούργιοι τύποι δεδομένων που αποτελούνται από την ομαδοποίηση υπαρχόντων τύπων δεδομένων Ομαδοποίηση πληροφορίας που

Διαβάστε περισσότερα

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 12/10/2017

Διαβάστε περισσότερα

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

Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι Αραποστάθης Μάριος Καθηγητής Πληροφορικής Πειραματικού Λυκείου Βαρβακείου http://users.sch.gr/mariosarapostathis

Διαβάστε περισσότερα

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

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 Κεφάλαιο 2 Δοµές Δεδοµένων Ι Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 Δοµές Δεδοµένων Ι Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 15: Διασυνδεμένες Δομές - Λίστες Διασυνδεδεμένες δομές δεδομένων Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα. Η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση

Διαβάστε περισσότερα

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Δυναμική Κατανομή Μνήμης Δυναμική εκχώρηση μνήμης Σωρός Συναρτήσεις malloc(), calloc(), realloc(), free() Δυναμικές δομές

Διαβάστε περισσότερα

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

3 ΟΥ και 9 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 3 ΟΥ και 9 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΙΝΑΚΩΝ ΣΤΟΙΒΑΣ ΚΑΙ ΟΥΡΑΣ Α ΜΕΡΟΣ ΘΕΩΡΙΑ ΓΙΑ ΠΙΝΑΚΕΣ 3.1

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

- Το πρόγραµµα σας δίνει τα αναµενόµενα αποτελέσµατα.

- Το πρόγραµµα σας δίνει τα αναµενόµενα αποτελέσµατα. Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ 1349 FAIL Δεν ελήφθη άσκηση 1482 1556 1559 1562 1563 1565 1566 FAIL - Στην initialize πρέπει να κάνετε έλεγχο αν η malloc αποτυγχάνει για κάθε κλήση της, άρα και για δέσµευση χώρου για

Διαβάστε περισσότερα

Διασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1

Διασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1 Διασυνδεδεμένες Δομές Λίστες Προγραμματισμός II 1 lalis@inf.uth.gr Διασυνδεδεμένες δομές Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση του είναι

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Δομές Δεδομένων (Data Structures) Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

IsEmptyList(L): επιστρέφει true αν L = < >, false ΕΝΟΤΗΤΑ 3 ΓΡΑΜΜΙΚΕΣ ΛΙΣΤΕΣ Ορισµός Γραµµικές Λίστες Γραµµική λίστα (linear list) είναι ένα σύνολο από n 0 κόµβους L 0, L 1,..., L n-1, όπου το στοιχείο L 0 είναι το πρώτο στοιχείο (ή ο πρώτος κόµβος),

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ 2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ Προκειμένου να επιτευχθεί η «ακριβής περιγραφή» ενός αλγορίθμου, χρησιμοποιείται κάποια γλώσσα που μπορεί να περιγράφει σειρές ενεργειών με τρόπο αυστηρό,

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Sheet2. Σωστή, και µπράβο που µεριµνήσατε για λίστες διαφορετικών µεγεθών.

Sheet2. Σωστή, και µπράβο που µεριµνήσατε για λίστες διαφορετικών µεγεθών. Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ Δεν κάνει compile και το λάθος είναι σηµαντικό: Το head1 είναι δείκτης σε struct, εποµένως η προσπέλαση πεδίου γίνεται 321 FAIL µε head1->next και όχι head1.next. Επιπλέον, έχετε λάθος

Διαβάστε περισσότερα

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

Διάλεξη 9: Αφηρημένοι Τύποι Δεδομένων. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 9: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) -Οι ΑΤΔ Στοίβα και Ουρά -Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Στατική

Διαβάστε περισσότερα

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

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 7: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου Διδάσκων:

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Ενότητα 7: Αφαίρεση δεδόμενων Πασχαλίδης Δημοσθένης Τμήμα Διαχείρισης Εκκλησιαστικών Κειμηλίων Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

Ενδεικτικές Ερωτήσεις Θεωρίας

Ενδεικτικές Ερωτήσεις Θεωρίας Ενδεικτικές Ερωτήσεις Θεωρίας Κεφάλαιο 2 1. Τι καλούμε αλγόριθμο; 2. Ποια κριτήρια πρέπει οπωσδήποτε να ικανοποιεί ένας αλγόριθμος; 3. Πώς ονομάζεται μια διαδικασία που δεν περατώνεται μετά από συγκεκριμένο

Διαβάστε περισσότερα

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 10: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) Σύγκριση Συνδεδεμένων Λιστών με Πίνακες

Διαβάστε περισσότερα

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

ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ Τα δεδομένα (data) είναι η αφαιρετική αναπαράσταση της πραγματικότητας και συνεπώς μία απλοποιημένη όψη της. Η συλλογή των ακατέργαστων δεδομένων και ο συσχετισμός

Διαβάστε περισσότερα

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

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Ενότητα 7 Ουρές Προτεραιότητας Ενότητα Ουρές Προτεραιότητας ΗΥ4 - Παναγιώτα Φατούρου Ουρές Προτεραιότητας Θεωρούµε ένα χώρο κλειδιών U και έστω ότι µε κάθε κλειδί Κ (τύπου Key) έχει συσχετισθεί κάποια πληροφορία Ι (τύπου Type). Έστω

Διαβάστε περισσότερα

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( ) Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική

Διαβάστε περισσότερα

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

Εισαγωγή στην επιστήμη των υπολογιστών. Οργάνωση εδομένων Κεφάλαιο 11ο ομές εδομένων Εισαγωγή στην επιστήμη των υπολογιστών Οργάνωση εδομένων Κεφάλαιο 11ο ομές εδομένων 1 ομή εδομένων Μια δομή δεδομένων (data structure) χρησιμοποιεί μια συλλογή από σχετικές μεταξύ τους μεταβλητές, οι οποίες

Διαβάστε περισσότερα

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός Βάσεις Δεδομένων 2017-2018 1 Κατακερματισμός Πρόβλημα στατικού κατακερματισμού: Έστω Μ κάδους και r εγγραφές ανά κάδο - το πολύ Μ * r εγγραφές (αλλιώς μεγάλες αλυσίδες υπερχείλισης)

Διαβάστε περισσότερα

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο Κατακερματισμός 1 Αποθήκευση εδομένων (σύνοψη) Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο Παραδοσιακά, μία σχέση (πίνακας/στιγμιότυπο) αποθηκεύεται σε ένα αρχείο Αρχείο δεδομένων

Διαβάστε περισσότερα

403 FAIL Λάθος στο πακετάρισµα του αρχείου.

403 FAIL Λάθος στο πακετάρισµα του αρχείου. ΑΕΜ ΒΑΘΜΟΣ 357 FAIL Λάθος στο πακετάρισµα του αρχείου. ΣΧΟΛΙΑ 400 FAIL 402 Έπρεπε να στείλετε ΜΟΝΟ το lab11.c Λάθος αλγόριθµος. Αµέσως µόλις συναντήστε κόµβο όπου το curr->number είναι διάφορο του number,

Διαβάστε περισσότερα

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

Ενότητα 2 Στοίβες Ουρές - Λίστες. ΗΥ240 - Παναγιώτα Φατούρου 1 Ενότητα 2 Στοίβες Ουρές - Λίστες ΗΥ240 - Παναγιώτα Φατούρου 1 Λίστες Γραµµική λίστα (linear list) είναι ένα σύνολο από n 0 στοιχεία ή κόµβους L 1,..., L n, τα οποία είναι διατεταγµένα µε γραµµική σειρά.

Διαβάστε περισσότερα

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός Βάσεις Δεδομένων 2018-2019 1 Κατακερματισμός Πρόβλημα στατικού κατακερματισμού: Έστω Μ κάδους και r εγγραφές ανά κάδο - το πολύ Μ * r εγγραφές (αλλιώς μεγάλες αλυσίδες υπερχείλισης)

Διαβάστε περισσότερα

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

Στοίβες Ουρές - Λίστες Ενότητα 3 Στοίβες Ουρές - Λίστες ΗΥ240 - Παναγιώτα Φατούρου 1 Λίστες Γραµµική λίστα (linear list) είναι ένα σύνολο από n 0 στοιχεία ή κόµβους L 1,..., L n, τα οποία είναι διατεταγµένα µε γραµµική σειρά.

Διαβάστε περισσότερα

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΛΥΣΗ ΣΤΗΝ ΕΥΤΕΡΗ ΑΣΚΗΣΗ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΛΥΣΗ ΣΤΗΝ ΕΥΤΕΡΗ ΑΣΚΗΣΗ ΜΑΘΗΜΑ ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ ΑΚΑ. ΕΤΟΣ 2012-13 Ι ΑΣΚΟΝΤΕΣ Ιωάννης Βασιλείου Καθηγητής, Τοµέας Τεχνολογίας

Διαβάστε περισσότερα

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

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής Στοίβες - Ουρές Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής οµές εδοµένων 1 Στοίβα (stack) οµή τύπουlifo: Last In - First Out (τελευταία εισαγωγή πρώτη εξαγωγή) Περιορισµένος

Διαβάστε περισσότερα

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο Κατακερµατισµός 1 Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο 1. Αρχεία Σωρού 2. Ταξινοµηµένα Αρχεία Φυσική διάταξη των εγγραφών

Διαβάστε περισσότερα

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός 1 Κατακερματισμός Τι αποθηκεύουμε στους κάδους; Στα παραδείγματα δείχνουμε μόνο την τιμή του πεδίου κατακερματισμού Την ίδια την εγγραφή (ως τρόπος οργάνωσης αρχείου) μέγεθος

Διαβάστε περισσότερα

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

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εισαγωγή, εύρεση, διαγραφή) Ευθύγραμμες Διπλά Συνδεδεμένες Λίστες

Διαβάστε περισσότερα

Ορισµός της Στοίβας Περίληψη H λειτουργία της Στοίβας (γενικά, αλλά και στο QtSpim pim) Η χρησιµότητα της Στοίβας στους Μικροεπεξεργαστές Κλήση συνάρτ

Ορισµός της Στοίβας Περίληψη H λειτουργία της Στοίβας (γενικά, αλλά και στο QtSpim pim) Η χρησιµότητα της Στοίβας στους Μικροεπεξεργαστές Κλήση συνάρτ ΗΜΥ 213 Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών Παρουσίαση Εργαστηρίου 5 ιδάσκων: ρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy Ορισµός της Στοίβας Περίληψη H λειτουργία της Στοίβας

Διαβάστε περισσότερα

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

Διαβάστε περισσότερα

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990, ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Πληροφορικής & Τηλεπικοινωνιών Μια σημείωση από τον Α. Δελή για το άρθρο: W. Pugh, Skip Lists: A Probabilistic Alternative to Balanced Trees, Comms of the ACM, 33(), June 10,

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ενότητα 14 Δυναμική διαχείριση μνήμης Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Στατική δέσμευση μνήμης Με τη δήλωση απλών μεταβλητών

Διαβάστε περισσότερα

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

Δομές Δεδομένων. Ενότητα 12: Κατακερματισμός: Χειρισμός Συγκρούσεων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Ενότητα 12: Κατακερματισμός: Χειρισμός Συγκρούσεων Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,

Διαβάστε περισσότερα

Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1

Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1 Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1 Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μνήμη I CS100,

Διαβάστε περισσότερα