(Εργασίες Μελέτες περιπτώσεων)

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

Download "(Εργασίες Μελέτες περιπτώσεων)"

Transcript

1 Τμήμα Μηχανικών Πληροφορικής Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Head node Data Next node Data Next Δεδομένο 2 Δεδομένο 1 Δομές Δεδομένων (Εργασίες Μελέτες περιπτώσεων) Δρ. Πάρις Μαστοροκώστας Καθηγητής Σέρρες 2015

2 ΠΕΡΙΕΧΟΜΕΝΑ Εργασία 1: Πίνακες και αλγοριθμική πολυπλοκότητα Εκφώνηση Εργασία 2: Σειριακή δυαδική αναζήτηση Εκφώνηση Εργασία 3: Ταξινόμηση (μέρος πρώτο): Απευθείας επιλογή και απευθείας εισαγωγή Εκφώνηση Εργασία 4: Ταξινόμηση (μέρος δεύτερο) Εκφώνηση Αλγόριθμοι φυσαλίδας και Quicksort Εφαρμογή του αλγορίθμου φυσαλίδας στην ταξινόμηση αλφαριθμητικών Συγκριτική ανάλυση των αλγορίθμων ταξινόμησης Εργασία 5: Στατικές στοίβες Εκφώνηση Εργασία 6: Στατικές ουρές Εκφώνηση Εργασία 7: Συνδεδεμένες λίστες Εκφώνηση Εργασία 8: Υλοποίηση στοιβών και ουρών με χρήση συνδεδεμένων λιστών Εκφώνηση Υλοποίηση στοίβας ως συνδεδεμένη λίστα Υλοποίηση ουράς ως συνδεδεμένη λίστα Εργασία 9: Δυαδικά δένδρα αναζήτησης Εκφώνηση Εργασία 10: Γράφοι Εκφώνηση Εργασία 11: Πίνακες κατακερματισμού Εκφώνηση Βιβλιογραφία 2

3 Τμήμα Μηχανικών Πληροφορικής Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Εργαστήριο Δομών Δεδομένων Πρώτη εργασία Να καταστρωθεί πρόγραμμα <project_1.cpp>, το οποίο να επιτελεί τις ακόλουθες εργασίες: Να δημιουργεί πίνακα ακεραίων p, μεγέθους Ν = 10, με στοιχεία τους αριθμούς i + 1, i = 0,1,,Ν-1. Nα υπολογίζει τα μερικά αθροίσματα των στοιχείων του πίνακα, τα οποία θα αποθηκεύει στον πίνακα s. Οι πίνακες p και s θα δημιουργούνται με δυναμική εκχώρηση μνήμης. Τα μερικά αθροίσματα θα υπολογισθούν με δύο διαφορετικούς αλγόριθμους, οι οποίοι θα υλοποιηθούν με τις αντίστοιχες συναρτήσεις: s k k p k = 0,1, Ν-1 int sum1(int *s, int *p, int rows); rows = μέγεθος p i 0 i s k p, για k 0 0 k = 0,1, Ν-1 int sum2(int *s, int *p, int rows); rows = μέγεθος p s p, για k 0 k 1 k Οι συναρτήσεις sum1 και sum2 θα επιστρέφουν τον πλήθος των πράξεων που εκτελούνται σε κάθε αλγόριθμο. Τα περιεχόμενα του πίνακα s και το πλήθος των πράξεων θα απεικονίζονται στην οθόνη. Να εξετασθεί η περίπτωση κατά την οποία ο πίνακας p θα είναι θέσεων και θα λαμβάνει τιμές με χρήση της συνάρτηση int getuniquenumber(int *p, int i) (ο κώδικάς της δίνεται στις σημειώσεις του εργαστηρίου). Για κάθε έναν από τους ανωτέρω αλγορίθμους θα εξάγεται το πλήθος των πράξεων και θα υπολογίζεται ο συνολικός χρόνος υλοποίησης του αλγορίθμου με χρήση της συνάρτησης time (dos.h). Συγκεκριμένα, πριν τη λειτουργία του κάθε αλγορίθμου θα εκτελείται ο κώδικας: gettime(&t); to = *t.ti_hour *t.ti_min + 100*t.ti_sec + t.ti_hund; 3

4 και μετά την ολοκλήρωση του αλγορίθμου θα εκτελείται ο κώδικας: gettime(&t); t1 = *t.ti_hour *t.ti_min + 100*t.ti_sec + t.ti_hund; Η διαφορά t1-t0 θα δίνει το χρόνο εκτέλεσης του αλγορίθμου σε εκατοστά του δευτερολέπτου. Τα περιεχόμενα του s δε θα απεικονίζονται στην οθόνη. Ένα στιγμιότυπο των αποτελεσμάτων δίνεται ακολούθως: 4

5 Τμήμα Μηχανικών Πληροφορικής Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Εργαστήριο Δομών Δεδομένων Δεύτερη εργασία Να καταστρωθεί πρόγραμμα <project_2.cpp>, το οποίο να επιτελεί τις ακόλουθες εργασίες: Να δημιουργεί πίνακα ακεραίων p, μεγέθους Ν = 30000, με στοιχεία τους αριθμούς i = 0,1,,Ν-1. Nα διαβάζει από το πληκτρολόγιο έναν ακέραιο και να τον αναζητεί στον πίνακα p. Η αναζήτηση θα υλοποιηθεί με δύο διαφορετικούς αλγόριθμους: Τη σειριακή μέθοδο αναζήτησης (int sequential_search(int *p, int key)), η οποία θα δέχεται ως είσοδο ένα δείκτη στον πίνακα p και τον προς αναζήτηση ακέραιο (όρισμα key) και θα επιστρέφει είτε το -1, σε περίπτωση που δε βρεθεί ο ακέραιος μέσα στον πίνακα, είτε τη θέση του πίνακα, στην οποία βρέθηκε το προς αναζήτηση στοιχείο. Την αναδρομική μέθοδο δυαδικής αναζήτησης (int binary_search(int left, int right, int *p, int key)), η οποία θα δέχεται ως είσοδο ένα δείκτη στον πίνακα p, τον προς αναζήτηση ακέραιο (όρισμα key), καθώς και τα όρια του διαστήματος αναζήτησης, και θα επιστρέφει είτε το -1, σε περίπτωση που δε βρεθεί ο ακέραιος μέσα στον πίνακα, είτε τη θέση του πίνακα, στην οποία βρέθηκε το προς αναζήτηση στοιχείο. Για κάθε μέθοδο να εμφανίζεται το πλήθος των ελέγχων που πραγματοποιούνται. Ο κώδικας/ψευδοκώδικας και των δύο μεθόδων αναζήτησης φιλοξενείται στις σημειώσεις του εργαστηρίου. Ένα στιγμιότυπο των αποτελεσμάτων δίνεται ακολούθως: 5

6 Τμήμα Μηχανικών Πληροφορικής Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Εργαστήριο Δομών Δεδομένων Τρίτη εργασία Να καταστρωθεί πρόγραμμα <project_3.cpp> το οποίο να επιτελεί τις ακόλουθες εργασίες: Να δημιουργεί πίνακα χαρακτήρων p[] με περιεχόμενο το αλφαριθμητικό ASORTINGEXAMPLE και πίνακα ακεραίων s[] με περιεχόμενο την ακολουθία ακεραίων 44,55,12,42,94,18,06,67, η οποία θα βρίσκεται αποθηκευμένη στο αρχείο κειμένου int_input.txt. Να ταξινομεί τους ανωτέρω πίνακες με τις μεθόδους ταξινόμησης απευθείας επιλογής και απευθείας εισαγωγής. Προς τούτο θα αναπτυχθούν οι συναρτήσεις: void straight_insert_string(char *p, int n); void straight_insert_int(int *s, int n); για την ταξινόμηση με απευθείας εισαγωγή και void straight_select_string(char *p, int n); void straight_select_int(int *s, int n); για την ταξινόμηση με απευθείας επιλογή. Ο κώδικας των μεθόδων ταξινόμησης παρατίθεται στις σημειώσεις του εργαστηρίου. Ο κώδικας της μεθόδου ταξινόμησης απευθείας επιλογής παρατίθεται στις σημειώσεις του εργαστηρίου, ενώ ο κώδικας για τον αλγόριθμο απευθείας εισαγωγής έχει ως ακολούθως: for (i = 1; i < N; i++) x = p[i]; j = i-1; while ((x < p[j]) && (j >= 0)) p[j+1] = p[j] ; j = j-1 ; p[j+1] = x ; 6

7 Να εμφανίζει στην οθόνη την εξέλιξη στα περιεχόμενα των πινάκων s και p σε κάθε βήμα των διαδικασιών ταξινόμησης, όπως φαίνεται ενδεικτικά στις ακόλουθες εικόνες: 7

8 Τμήμα Μηχανικών Πληροφορικής Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Εργαστήριο Δομών Δεδομένων Τέταρτη εργασία A. Να καταστρωθεί πρόγραμμα <project_4_1.cpp> το οποίο να επιτελεί τις ακόλουθες εργασίες: Να δημιουργεί πίνακα χαρακτήρων p[] με περιεχόμενο το αλφαριθμητικό ASORTINGEXAMPLE και πίνακα ακεραίων s[] με περιεχόμενο την ακολουθία ακεραίων 44,55,12,42,94,18,06,67, η οποία θα βρίσκεται αποθηκευμένη στο αρχείο κειμένου int_input.txt. Να ταξινομεί τους ανωτέρω πίνακες με τις μεθόδους ταξινόμησης φυσαλίδας και quicksort. Προς τούτο θα αναπτυχθούν οι συναρτήσεις: void bubblesort_string(char *p, int n); για την ταξινόμηση φυσαλίδας και void quicksort_string(int left, int right, char *p); για την ταξινόμηση με τον αλγόριθμο quicksort. void bubblesort_int(int *s, int n); void quicksort_int(int left, int right, int *s); O κώδικας της μεθόδου ταξινόμησης φυσαλίδας παρατίθεται στις σημειώσεις του εργαστηρίου, ενώ ο κώδικας για τον αλγόριθμο quicksort έχει ως ακολούθως: if (left < right) i = left; j = right; mid = (left+right)/2; x = p[mid]; while (i < j) while (p[i] < x) i++; while (p[j] > x) if (i < j) if (p[i] == p[j]) if (i<mid) if (j>mid) j--; i++; j--; 8

9 else quicksort(left,j-1,p); quicksort(j+1,right,p); temp = p[i]; p[i] = p[j]; p[j] = temp; Να εμφανίζει στην οθόνη την εξέλιξη στα περιεχόμενα των πινάκων s και p σε κάθε βήμα των διαδικασιών ταξινόμησης, όπως φαίνεται ενδεικτικά στις ακόλουθες εικόνες: 9

10 B. Να καταστρωθεί πρόγραμμα <project_4_2.cpp>, το οποίο να διαβάζει από ένα προϋπάρχον αρχείο κειμένου (strings_input.txt) δέκα ονόματα των είκοσι χαρακτήρων κατά μέγιστο, να τα αποθηκεύει σε πίνακα αλφαριθμητικών και να τα ταξινομεί με τον αλγόριθμο φυσαλίδας, όπως φαίνεται ενδεικτικά στις ακόλουθες εικόνες (απαιτείται η χρήση των συναρτήσεων strcmp και strcpy για τη σύγκριση και αντιγραφή αλφαριθμητικών, αντίστοιχα): Γ. Να καταστρωθεί πρόγραμμα <project_4_3.cpp>, το οποίο να επιτελεί τις ακόλουθες εργασίες: Να δημιουργεί πίνακα ακεραίων p[], τον οποίο να ταξινομεί με τις μεθόδους της απευθείας επιλογής, της απευθείας εισαγωγής, της φυσαλίδας και την quicksort. Για την υλοποίησή τους θα κατασκευασθεί διεπαφή sorting_methods.h, η οποία θα περιλαμβάνει τις ήδη αναπτυχθείσες συναρτήσεις void straight_select_int(int *s, int n); void straight_insert_int(int *s, int n); void bubblesort_int(int *s, int n); void quicksort_int(int left, int right, int *s); Στον πίνακα θα αποδίδονται αρχικές τιμές με τη συνάρτηση int getuniquenumber(int *p, int i) (ο κώδικάς της δίνεται στις σημειώσεις του εργαστηρίου) και για κάθε μία μέθοδο θα υπολογίζεται ο συνολικός χρόνος υλοποίησης της ταξινόμησης με χρήση της συνάρτησης time (dos.h). Στο χρόνο εκτέλεσης δε θα προσμετράται ο χρόνος απόδοσης τιμών στον πίνακα, παρά μόνο ο χρόνος εκτέλεσης της εκάστοτε μεθόδου. Συγκεκριμένα, πριν τη λειτουργία κάθε μεθόδου θα εκτελείται ο κώδικας: gettime(&t); to = *t.ti_hour *t.ti_min + 100*t.ti_sec + t.ti_hund; και μετά την ολοκλήρωση της μεθοδου θα εκτελείται ο κώδικας: 10

11 gettime(&t); t1 = *t.ti_hour *t.ti_min + 100*t.ti_sec + t.ti_hund; Η διαφορά t1-t0 θα δίνει το χρόνο εκτέλεσης της μεθόδου σε εκατοστά του δευτερολέπτου. Ο πίνακας να ορισθεί αρκετά μεγάλος, π.χ θέσεων, και να κρατηθεί ένα αντίγραφό του, έτσι ώστε κάθε μία από τις τέσσερις μεθόδους ταξινόμησης να εφαρμόζεται στις ίδιες αρχικές τιμές. Να εκτελεσθεί η τετράδα των μεθόδων ταξινόμησης 100 φορές για διαφορετικούς αρχικούς πίνακες με τη χρήση της συνάρτησης randomize και οι χρόνοι εκτέλεσης για τους τέσσερις διαφορετικούς αλγόριθμους στο αρχείο κειμένου results.txt, το οποίο θα περιλαμβάνει 100 γραμμές (που αφορούν στις δοκιμές) και 4 στήλες (που αφορούν στις μεθόδους σε κάθε δοκιμή). Το αρχείο να εισαχθεί ακολούθως σε λογιστικό φύλλο και να εξαχθούν στατιστικά συμπεράσματα για την επίδοση των τεσσάρων μεθόδων (μέση τιμή και τυπική απόκλιση του χρόνου εκτέλεσης, μέγιστος και ελάχιστος χρόνος εκτέλεσης). Ενδεικτικά αποτελέσματα σε Intel Pentium 4, 2.6GHz, 2003, όπου παρουσιάζονται οι τελευταίες 10 από τις συνολικές 100 δοκιμές: 11

12 Τμήμα Μηχανικών Πληροφορικής Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Εργαστήριο Δομών Δεδομένων Πέμπτη εργασία Να καταστρωθεί πρόγραμμα <project_5.cpp>, το οποίο θα χρησιμοποιεί την Αντίστροφη Πολωνική Σημειογραφία (Reverse Polish Notation, RPN) και θα υπολογίζει την τιμή παράστασης μονοψήφιων ακεραίων. Ο υπολογισμός τής παράστασης θα γίνεται με χρήση μίας στοίβας, η οποία θα υλοποιείται με πίνακα. Η λειτουργία του προγράμματος θα έχει ως εξής: Η παράσταση ως ακολουθία χαρακτήρων, οι οποίοι θα διαβάζονται με χρήση της getchar() και θα ολοκληρώνεται με ENTER. Θα γίνεται έλεγχος κατά πόσον οι χαρακτήρες ανήκουν στο σύνολο 0,... 9, +, *, -, /. Κάθε φορά που θα διαβάζεται ένας τελεσταίος θα τοποθετείται στη στοίβα. Κάθε φορά που θα διαβάζεται ένας τελεστής, θα εξάγονται δύο τελεσταίοι από την κορυφή της στοίβας, θα γίνεται η ανάλογη αριθμητική πράξη και το αποτέλεσμα θα τοποθετείται πίσω στη στοίβα. Στην μεν πράξη της αφαίρεσης θα αφαιρείται ο πρώτος τελεσταίος από το δεύτερο, στη δε πράξη της διαίρεσης θα διαιρείται ο δεύτερος τελεσταίος με τον πρώτο, ενώ θα γίνεται και έλεγχος διαίρεσης με το μηδέν. Ο έλεγχος του είδους του χαρακτήρα που διαβάστηκε (τελεστής ή τελεσταίος) θα γίνεται με τη συνάρτηση isdigit() (περιέχεται στο ctype.h). Εφόσον διαβαστεί και ο τελευταίος χαρακτήρας του αλφαριθμητικού, το εναπομείναν στοιχείο της στοίβας θα είναι το αποτέλεσμα της παράστασης. Θα δημιουργηθεί αρχείο κεφαλίδας mystack.h, το οποίο θα φιλοξενεί τις απαιτούμενες συναρτήσεις (όπως παρουσιάζονται στις σημειώσεις του εργαστηρίου): void push(int stack[], int *t, int obj), για την εισαγωγή στοιχείου στη στοίβα (το μέγεθος της στοίβας δίνεται μέσω define στο αρχείο κεφαλίδας) int pop(int stack[], int *t), για την εξαγωγή στοιχείου από τη στοίβα 12

13 Μετά από κάθε ανάγνωση χαρακτήρα και ενέργεια επί της στοίβας, θα τυπώνεται ο αναγνωσθείς χαρακτήρας, χαρακτηριζόμενος κατά πόσον είναι τελεστής ή τελεσταίος, και θα εμφανίζεται στην οθόνη η τρέχουσα κατάσταση της στοίβας, όπως φαίνεται στο ακόλουθο στιγμιότυπο: Παρατηρήσεις: 1) Στον κώδικα λειτουργίας της στοίβας η μεταβλητή top, που εκφράζει την τρέχουσα κορυφή της στοίβας, είναι τύπου int. 2) Σε μία αριθμητική παράσταση σε RPN δεν υπάρχουν παρενθέσεις και οι τελεστές έπονται των τελεσταίων. Για παράδειγμα, η παράσταση 2 * ( ) σε RPN γίνεται *. 13

14 Τμήμα Μηχανικών Πληροφορικής Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Εργαστήριο Δομών Δεδομένων Έκτη εργασία Να καταστρωθεί πρόγραμμα <project_6.cpp> για την εξυπηρέτηση αυτοκινήτων σε διόδια με την χρήση ουράς, η οποία θα υλοποιείται με πίνακα. Συγκεκριμένα: Θα δημιουργηθεί συνάρτηση int display_menu(), η οποία θα υλοποιεί το παρακάτω μενού: ΜΕΝU ====== 1.Car arrival 2.Car departure 3.Queue state 0.Exit (επιλογή για νέα άφιξη αυτοκινήτου) (επιλογή για αναχώριση αυτοκινήτου) (επιλογή για την εμφάνιση της τρέχουσας κατάστασης της ουράς) (επιλογή για έξοδο) Η επιλογή θα επιστρέφεται στην κύρια συνάρτηση και θα επιτελούνται οι ακόλουθες λειτουργίες: Επιλογή 1: Επιλογή 2: Επιλογή 3: Επιλογή 4: Θα πληκτρολογούνται τα στοιχεία της πινακίδας του αυτοκινήτου σε αλφαριθμητικό plate, το οποίο θα τοποθετείται στο τέλος της ουράς, με χρήση της συνάρτησης void enqueue(char **q, int *r, char *obj) Το αυτοκίνητο που βρίσκεται πρώτο στην ουρά θα διαγράφεται μαζί με ένα ανάλογο μήνυμα επιβεβαίωσης, με χρήση της συνάρτησης void dequeue(char **q, int *f, int r, int length) όπου length το μήκος του αλφαριθμητικού που φιλοξενεί την πινακίδα (7 + πιθανό κενό + \0\ = 9) Θα εμφανίζονται, με τη σειρά, οι πινακίδες των αυτοκινήτων που παραμένουν στην ουρά για να εξυπηρετηθούν, με χρήση της συνάρτησης void printqueue(char **q, int f, int r) Το πρόγραμμα θα τερματίζεται. 14

15 Οι τρεις ανωτέρω συναρτήσεις διαχείρισης της ουράς θα φιλοξενηθούν στο αρχείο κεφαλίδας myqueue.h. Οι πίνακες χαρακτήρων που θα απαιτηθούν στο κύριο πρόγραμμα, θα υλοποιηθούν με δυναμική δέσμευση μνήμης. Ο κώδικας των συναρτήσεων διαχείρισης της ουράς έχει ως ακολούθως: void enqueue(char **q, int *r, char *obj) if ((*r)==(n-1)) printf("queue is full..."); getch(); else strcpy(q[++(*r)],obj); void dequeue(char **q, int *f, int r, int length) if ((*f)==r) printf("queue is empty...\n"); else printf("%s has been served and deleted from the queue...", q[++(*f)]); void printqueue(char **q, int f, int r) int i; for (i=(f+1);i<=r;i++) printf("\n\tqueue[%d]=%s",i,q[i]); Ένα στιγμιότυπο των αποτελεσμάτων φιλοξενείται στην επόμενη σελίδα: 15

16 16

17 Τμήμα Μηχανικών Πληροφορικής Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Εργαστήριο Δομών Δεδομένων Έβδομη εργασία Να καταστρωθεί πρόγραμμα <project_7.cpp>, το οποίο να κατασκευάζει μία ταξινομημένη συνδεδεμένη λίστα, σε κάθε κόμβο της οποίας να περιέχεται ένας χαρακτήρας. Συγκεκριμένα: Θα δημιουργηθεί συνάρτηση int display_menu(), η οποία θα υλοποιεί το παρακάτω μενού: ΜΕΝU ====== 1. List insert (επιλογή για εισαγωγή στοιχείου στη λίστα) 2. List delete (επιλογή για διαγραφή στοιχείου από τη λίστα) 3. List display (εμφάνιση των τρεχόντων περιεχομένων της λίστας) 0.Exit (επιλογή για έξοδο) Η επιλογή θα επιστρέφεται στην κύρια συνάρτηση και θα επιτελούνται οι ακόλουθες λειτουργίες: Επιλογή 1: Επιλογή 2: Επιλογή 3: Επιλογή 4: Θα πληκτρολογείται ένας νέος χαρακτήρας και θα εισάγεται σε ένα νέο κόμβο στη λίστα στη σωστή θέση, με χρήση της συνάρτησης PTR insert_to_list(ptr head, char c) Θα πληκτρολογείται ένας χαρακτήρας και, εφόσον βρεθεί στα περιεχόμενα της λίστας, θα διαγράφεται από αυτήν ο κόμβος που τον περιέχει, με χρήση της συνάρτησης PTR delete_from_list(ptr head, char c) Θα εμφανίζονται τα περιεχόμενα των κόμβων της λίστας, με χρήση της συνάρτησης void print_list(ptr head) Το πρόγραμμα θα τερματίζεται. Ο κώδικας των συναρτήσεων διαχείρισης της λίστας φιλοξενείται στις σημειώσεις του εργαστηρίου. 17

18 Οι τρεις ανωτέρω συναρτήσεις διαχείρισης της ουράς θα φιλοξενηθούν στο αρχείο κεφαλίδας mylist.h, στο οποίο θα δηλωθεί και ο τύπος δεδομένου για τον κόμβο της λίστας: struct node char data; struct node *next; ; typedef struct node * PTR; Ένα στιγμιότυπο των αποτελεσμάτων φιλοξενείται διαδοχικά στις ακόλουθες εικόνες: 18

19 19

20 Τμήμα Μηχανικών Πληροφορικής Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Εργαστήριο Δομών Δεδομένων Όγδοη εργασία Να καταστρωθούν τα προγράμματα <project_8_1.cpp> και <project_8_2.cpp>, τα οποία θα υλοποιούν τα ζητούμενα των εργασιών 5 και 6, αντίστοιχα, με τη στοίβα και την ουρά να υλοποιούνται με χρήση δεικτών και λίστας. Ο κώδικας για τη διαχείριση της λίστας και της ουράς φιλοξενείται στις σημειώσεις του εργαστηρίου. Ο τύπος δεδομένου του κόμβου έχει ως εξής: struct node data_type 1 data; struct node *next; ; typedef struct node * PTR; Για να εκτυπώνονται τα περιεχόμενα της στοίβας μετά την εισαγωγή κάθε νέου χαρακτήρα, να ενταχθεί στο αρχείο κεφαλίδας (βλ. Εργασία 5) η ακόλουθη συνάρτηση: void print(ptr top) PTR current; current=top; if (current==null) printf("stack is empty. Press any key to continue\n"); 1 Ακέραιος για την εργασία 5, πίνακας χαρακτήρων για την εργασία 6. 20

21 else while (current!=null) printf("\t\t\t%d\n",current->data); current=current->next; Ενδεικτικό στιγμιότυπο των αποτελεσμάτων για την Εργασία 5 παρατίθεται ακολούθως: 21

22 Για να εκτυπώνονται τα περιεχόμενα της ουράς, να ενταχθεί στο αρχείο κεφαλίδας (βλ. Εργασία 6) η ακόλουθη συνάρτηση: void printqueue(ptr p) while (p!=null) printf("\n\t\t%s",p->data); p=p->next; Η κλήση της ανωτέρω συνάρτησης στο κύριο αρχείο θα γίνεται με την εντολή printqueue(front); Ένα στιγμιότυπο των αποτελεσμάτων για την Εργασία 6 φιλοξενείται στην επόμενη εικόνα: 22

23 Τμήμα Μηχανικών Πληροφορικής Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Εργαστήριο Δομών Δεδομένων Ένατη εργασία Να καταστρωθεί πρόγραμμα <project_9.cpp> για τη διαχείριση και εφαρμογή δυαδικών δένδρων αναζήτησης. Συγκεκριμένα: Να διαβάζει τα ονόματα και τα τηλέφωνα διαφόρων ατόμων από ένα προϋπάρχον δυαδικό αρχείο και να τα τοποθετεί σε ένα δυαδικό δένδρο αναζήτησης. Η εισαγωγή των στοιχείων θα γίνεται με χρήση της συνάρτησης void insert_node(ptr *pt, struct personτ). Η δομή persont θα περιλαμβάνει τα αλφαριθμητικά όνομα και τηλέφωνο. Να υπολογίζει το πλήθος των κόμβων και το ύψος του δένδρου με χρήση των συναρτήσεων int count(ptr t) και int height(ptr t), αντίστοιχα. Να υλοποιείται το παρακάτω μενού με χρήση της συνάρτησης int display_menu(): ΜΕΝU ====== 1. Preorder traversal (επιλογή για προδιατεταγμένη διάσχιση του δένδρου) 2. Inorder traversal (επιλογή για ενδοδιατεταγμένη διάσχιση του δένδρου) 3. Postorder traversal (επιλογή για μεταδιατεταγμένη διάσχιση του δένδρου) 4. Tree search (επιλογή για αναζήτηση στοιχείου στο δένδρο, με κλειδί το όνομα) 0. Exit (επιλογή για έξοδο) Η επιλογή να επιστρέφεται στην κύρια συνάρτηση και να επιτελούνται οι ακόλουθες λειτουργίες: Επιλογή 1: Θα εμφανίζονται τα περιεχόμενα των κόμβων του δένδρου (δεδομένα και διευθύνσεις) με την προδιατεταγμένη μέθοδο διάσχισης και με χρήση της συνάρτησης void preorder_traversal(ptr t) 23

24 Επιλογή 2: Θα εμφανίζονται τα περιεχόμενα των κόμβων του δένδρου (δεδομένα και διευθύνσεις) με την ενδοδιατεταγμένη μέθοδο διάσχισης και με χρήση της συνάρτησης void inorder_traversal(ptr t) Επιλογή 3: Θα εμφανίζονται τα περιεχόμενα των κόμβων του δένδρου (δεδομένα και διευθύνσεις) με τη μεταδιατεταγμένη μέθοδο διάσχισης και με χρήση της συνάρτησης void postorder_traversal(ptr t) Επιλογή 4: Θα πληκτρολογείται ένα όνομα και θα αναζητείται στο δένδρο. Ακολούθως θα εμφανίζεται ένα μήνυμα αν η αναζήτηση ήταν επιτυχής ή όχι, το πλήθος των ελέγχων, καθώς επίσης και τα στοιχεία του κόμβου (όνομα και τηλέφωνο) εφόσον η αναζήτηση ήταν επιτυχής. Προς τούτο θα χρησιμοποιηθεί η συνάρτηση void find_node(ptr t, char *n, int i) Επιλογή 0: Το πρόγραμμα θα τερματίζεται. Όλες οι ανωτέρω συναρτήσεις διαχείρισης του δένδρου, πλην της int display_menu(), να φιλοξενηθούν στο αρχείο κεφαλίδας mytree.h. Ο βασικός κώδικας των συναρτήσεων insert_node, preorder_traversal, inorder_traversal και postorder_traversal βρίσκεται στις σημειώσεις του εργαστηρίου. Ο κώδικας των λοιπων συναρτήσεων διαχείρισης του δένδρου δίνεται ακολούθως: void find_node(ptr t, char *n, int i) i++; if (t==null) printf("\nthe node was not found.\n"); printf("number of searches:%d\n",i); else if (strcmp(t->data.name,n)==0) printf("\nthe node was found!!!\n"); printf("number of searches:%d\n",i); printf(" %s\n",t->data.name); 24

25 printf(" %s\n\n",t->data.phone); else if (strcmp(n,t->data.name)<0) find_node(t->left,n,i); else find_node(t->right,n,i); int count(ptr t) if (t==null) return(0); return(count(t->left)+count(t->right)+1); int height(ptr t) int u,v; if (t==null) return(-1); u=height(t->left); v=height(t->right); if (u>v) return(u+1); else return(v+1); 25

26 Ο τύπος δεδομένου του κόμβου, που δηλώνεται στο αρχείο κεφαλίδας mytree.h, έχει ως εξής: struct treenode persont data; struct treenode *left; struct treenode *right; typedef struct treenode *PTR; Να απεικονισθεί γραφικά η μορφή του δένδρου. Στις ακόλουθες εικόνες παρουσιάζονται ενδεικτικά αποτελέσματα και επικουρικά στοιχεία. Συγκεκριμένα. Εικόνα 1: Στιγμιότυπο των δεδομένων που εισάγονται στο δυαδικό αρχείο. Εικόνα 2: Αποτελέσματα επιτυχούς ανεπιτυχούς αναζήτησης ονόματος στο δένδρο. Εικόνα 3: Αποτελέσματα για το πλήθος των κόμβων και το ύψος του δένδρου. Εικόνα 4: Αποτελέσματα των τριών μεθόδων διάσχισης του δένδρου. Εικόνα 5: Απεικόνιση του δένδρου. 26

27 Εικόνα 1 Εικόνα 2 Εικόνα 3 27

28 (α) (β) (γ) Εικόνα 4 28

29 John Jim Julia NULL NULL Jane Martha NULL NULL Lycy Timothy NULL NULL NULL NULL Εικόνα 5 29

30 Τμήμα Μηχανικών Πληροφορικής Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Εργαστήριο Δομών Δεδομένων Δέκατη εργασία Να καταστρωθεί πρόγραμμα <project_10.cpp> για την αναζήτηση σε γράφο. Συγκεκριμένα: Θεωρούμε τον ακόλουθο γράφο: Να υλοποιηθεί η μέθοδος αναζήτησης με προτεραιότητα πλάτους (Breadth First Search). Η αναπαράσταση του γράφου γίνεται με τη χρήση πίνακα διπλανών κορυφών. Οι συναρτήσεις που θα αναπτυχθούν να φιλοξενηθούν στο αρχείο κεφαλίδας mygraph.h. To αποτέλεσμα της αναζήτησης είναι το ακόλουθο: 30

31 Τμήμα Μηχανικών Πληροφορικής Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Εργαστήριο Δομών Δεδομένων Ενδέκατη εργασία Να καταστρωθεί πρόγραμμα <project_11.cpp> για την εφαρμογή των πινάκων κατακερματισμού με ξεχωριστή σύνδεση (separate chaining). Συγκεκριμένα: Να διαβάζει τα ονόματα και τα τηλέφωνα διαφόρων ατόμων από ένα προϋπάρχον δυαδικό αρχείο και να τα τοποθετεί στον πίνακα. Η εισαγωγή των στοιχείων θα γίνεται με χρήση της συνάρτησης void insert_person(ptr ht[], personτ p). Η δομή persont θα περιλαμβάνει τα αλφαριθμητικά όνομα και τηλέφωνο. Ο υπολογισμός της θέσης του νέου στοιχείου στον πίνακα θα γίνεται μέσω της συνάρτησης κατακερματισμού: strlen ( nam e ) 1 hashing _ value (int) nam e[ i] m od( N ) i 0 όπου mod το υπόλοιπο της διαίρεσης ακεραίων και N το μέγεθος του πίνακα κατακερματισμού. Η συνάρτηση υλοποιείται μέσω της int get_hash_val(char name[]), η οποία καλείται από την insert_person() λαμβάνοντας ως όρισμα το όνομα του στοιχείου, υπολογίζει τη θέση, την οποία και επιστρέφει στην insert_person(). Να υλοποιείται το παρακάτω μενού με χρήση της συνάρτησης int display_menu(): ΜΕΝU ====== 1. Find person (αναζήτηση ατόμου) 2. Display table (εμφάνιση πίνακα) 0. Exit (επιλογή για έξοδο) Η επιλογή να επιστρέφεται στην κύρια συνάρτηση και να επιτελούνται οι ακόλουθες λειτουργίες: 31

32 Επιλογή 1: Θα πληκτρολογείται ένα όνομα και θα αναζητείται στον πίνακα. Ακολούθως θα εμφανίζονται τα στοιχεία του ατόμου αν η αναζήτηση ήταν επιτυχής ή ένα ανάλογο μήνυμα αν η αναζήτηση ήταν ανεπιτυχής. Προς τούτο θα χρησιμοποιηθεί η συνάρτηση void find_person(ptr ht[], char name[], int *k). Επιλογή 2: Θα εμφανίζονται τα περιεχόμενα των κόμβων του πίνακα με χρήση της συνάρτησης void display_table(ptr ht[]). Όλες οι ανωτέρω συναρτήσεις διαχείρισης του δένδρου, πλην της display_menu(), να φιλοξενηθούν στο αρχείο κεφαλίδας myhash.h. Ο βασικός κώδικας των συναρτήσεων διαχείρισης του πίνακα κατακερματισμού, πλην της get_hash_val(), βρίσκεται στις σημειώσεις του εργαστηρίου. Ο τύπος δεδομένου του κόμβου, που δηλώνεται στο αρχείο κεφαλίδας myhash.h, έχει ως εξής: struct node persont data; struct node *next; typedef struct node *PTR; Στις ακόλουθες εικόνες παρουσιάζονται ενδεικτικά αποτελέσματα και επικουρικά στοιχεία. Για να καταδειχθεί η λειτουργία του πίνακα κατακερματισμού, το N τέθηκε ίσο με 4 και τα στοιχεία του αρχείου είναι 7. Συγκεκριμένα. Εικόνα 1: Αποτελέσματα επιτυχούς ανεπιτυχούς αναζήτησης ονόματος στον πίνακα. Εικόνα 1: Στιγμιότυπο των δεδομένων που έχουν εισαχθεί στον πίνακα. Εικόνα 3: Απεικόνιση του πίνακα κατακερματισμού, όπου εμφανίζεται η διάρθρωση της λίστας σε κάθε θέση του πίνακα. 32

33 Εικόνα 1 Εικόνα 2 33

34 3 κόμβοι στη λίστα της δεύτερης θέσης του πίνακα Εικόνα 3 34

35 ΒΙΒΛΙΟΓΡΑΦΙΑ 1. S. Andersen, Data structures in Java a laboratory course, Jones and Bartlett Publishers, X. Κοίλιας, Δομές δεδομένων και οργανώσεις αρχείων, Εκδόσεις Νέων Τεχνολογιών, Π. Μποζάνης, Αλγόριθμοι, Εκδόσεις Τζιόλα, Π. Μποζάνης, Δομές δεδομένων, Εκδόσεις Τζιόλα, Π. Μποζάνης, Προβλήματα και ασκήσεις στους αλγόριθμους, Εκδόσεις Τζιόλα, Ευάγ. Ούτσιος, Αλγόριθμοι και δομές δεδομένων (σημειώσεις εργαστηρίου), Τ.Ε.Ι. Σερρών, S. Sahni, Δομές δεδομένων, αλγόριθμοι και εφαρμογές στη C++, Εκδόσεις Τζιόλα, R. Sedgewick, Αλγόριθμοι σε C, Μέρη 1-4 (θεμελιώδεις έννοιες, δομές δεδομένων, ταξινόμηση, αναζήτηση), 3 η έκδοση, Εκδόσεις Κλειδάριθμος, N. Wirth, Αλγόριθμοι και δομές δεδομένων, Εκδόσεις Κλειδάριθμος,

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ AM: Δοµές Δεδοµένων Εξεταστική Ιανουαρίου 2014 Διδάσκων : Ευάγγελος Μαρκάκης 20.01.2014 ΥΠΟΓΡΑΦΗ ΕΠΟΠΤΗ: Διάρκεια εξέτασης : 2 ώρες και

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 16 Δένδρα (Trees) 1 / 42 Δένδρα (Trees) Ένα δένδρο είναι ένα συνδεδεμένο γράφημα χωρίς κύκλους Για κάθε

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

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

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

Φροντιστήριο 4 Σκελετοί Λύσεων Φροντιστήριο 4 Σκελετοί Λύσεων 1. Ο ζητούμενος ΑΤΔ μπορεί να υλοποιηθεί ως εξής: (i) Διαδοχική χορήγηση μνήμης Υποθέτουμε ότι οι λίστες μας έχουν μέγιστο μέγεθος max και χρησιμοποιούμε τη δομή type elements[max];

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

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

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

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

Δομές Δεδομένων και Αλγόριθμοι (Γ εξάμηνο) Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Ηπείρου. Άσκηση εργαστηρίου #6 (Υλοποίηση δυαδικού δένδρου αναζήτησης)

Δομές Δεδομένων και Αλγόριθμοι (Γ εξάμηνο) Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Ηπείρου. Άσκηση εργαστηρίου #6 (Υλοποίηση δυαδικού δένδρου αναζήτησης) Δομές Δεδομένων και Αλγόριθμοι (Γ εξάμηνο) Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Ηπείρου Γκόγκος Χρήστος 04/12/2014 Άσκηση εργαστηρίου #6 (Υλοποίηση δυαδικού δένδρου αναζήτησης) Στην εργασία αυτή παρουσιάζεται

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

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

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

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

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

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

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

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

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Απλές Λίστες CS100, 2015-2016 1 / 10 Δομές δεδομένων Ορισμός:

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

ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ

ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Ουρές ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ Μια ουρά αποτελεί μια δομή δεδομένων στη λογική του First-in

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

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

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

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

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης (ΔΔΑ) Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου Εισαγωγή στοιχείου

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

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

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Άσκηση 1 (α) Έστω Α(n) και Κ(n) ο αριθμός των ακμών και ο αριθμός των κόμβων ενός αυστηρά δυαδικού δένδρου με n φύλλα. Θέλουμε να αποδείξουμε για κάθε n 1 την πρόταση

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ100) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΠΝΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΣ ΔΔΟΜΝΩΝ ΚΙ ΛΓΟΡΙΘΜΟΙ ΗΜΡΟΜΗΝΙ: 14/11/2018 ΔΙΓΝΩΣΤΙΚΟ ΠΝΩ Σ ΔΝΔΡΙΚΣ ΔΟΜΣ ΚΙ ΓΡΦΟΥΣ Διάρκεια: 45 λεπτά Ονοματεπώνυμο:. ρ. Ταυτότητας:. ΒΘΜΟΛΟΓΙ ΣΚΗΣΗ ΒΘΜΟΣ

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

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

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

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

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 14 Μαΐου 2018, ώρα 23:59 Τρόπος Παράδοσης: Χρησιμοποιώντας

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

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Γιάννης Κουτσονίκος Επίκουρος Καθηγητής Οργάνωση Δεδομένων Δομή Δεδομένων: τεχνική οργάνωσης των δεδομένων με σκοπό την

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

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

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

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

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

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

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

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

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε μία αναδρομική συνάρτηση που θα παίρνει ως παράμετρο ένα δείκτη στη ρίζα ενός δυαδικού δένδρου και θα επιστρέφει το βαθμό του

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

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

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

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

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

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

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

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Α Β Γ static; printf(%c\n, putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf(*); ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2016 (1/2/2016) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 9: Στοίβες:Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Υλοποίηση Στοιβών με Δυναμική Δέσμευση Μνήμης Εφαρμογή Στοιβών 1: Αναδρομικές συναρτήσεις Εφαρμογή

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

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

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

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

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research ΑΛΓΟΡΙΘΜΟΙ ΜΕ C ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής CMOR Lab Computational Methodologies and Operations Research Δέντρα (5) Τ ένα δέντρο i ένας κόμβος στο επίπεδο k j ένας κόμβος στο επίπεδο k+1 } :

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

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

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

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

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

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

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

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

Δομές Δεδομένων & Αλγόριθμοι - Δυαδικά Δένδρα (binary trees) - Δυαδικά Δένδρα Αναζήτησης (binary search trees) 1 Δυαδικά Δένδρα Ορισμοί Λειτουργίες Υλοποιήσεις ΑΤΔ Εφαρμογές 2 Ορισμοί (αναδρομικός ορισμός) Ένα δένδρο t είναι ένα πεπερασμένο

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

Περιεχόμενα. Πρόλογος... 17

Περιεχόμενα. Πρόλογος... 17 Περιεχόμενα Πρόλογος... 17 Κεφάλαιο 1: Εισαγωγή... 19 Πώς να διαβάσετε αυτό το βιβλίο... 20 Η γλώσσα C Ιστορική αναδρομή... 22 Τα χαρακτηριστικά της C... 23 C Μια δομημένη γλώσσα... 23 C Μια γλώσσα για

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

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

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

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

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

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

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

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

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

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

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

Φροντιστήριο 4 Σκελετοί Λύσεων Φροντιστήριο 4 Σκελετοί Λύσεων Άσκηση 1 Υποθέτουμε πως οι λίστες είναι υλοποιημένες χρησιμοποιώντας τις πιο κάτω δομές. typedef struct Node{ type data; struct node *next; node; node *top; list; Υλοποιούμε

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

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

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

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

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1 Διασυνδεδεμένες Δομές Δυαδικά Δέντρα Προγραμματισμός II 1 lalis@inf.uth.gr Δέντρα Τα δέντρα είναι κλασικές αναδρομικές δομές Ένα δέντρο αποτελείται από υποδέντρα, καθένα από τα οποία μπορεί να θεωρηθεί

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

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

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

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

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης Γ7.5 Αλγόριθμοι Αναζήτησης Γ Λυκείου Κατεύθυνσης Εισαγωγή Αλγόριθμος αναζήτησης θεωρείται ένας αλγόριθμος, ο οποίος προσπαθεί να εντοπίσει ένα στοιχείο με συγκεκριμένες ιδιότητες, μέσα σε μία συλλογή από

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ AM: Δοµές Δεδοµένων Πτυχιακή Εξεταστική Ιούλιος 2014 Διδάσκων : Ευάγγελος Μαρκάκης 09.07.2014 ΥΠΟΓΡΑΦΗ ΕΠΟΠΤΗ: Διάρκεια εξέτασης : 2 ώρες

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

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

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

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

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

Εργασία 3 Σκελετοί Λύσεων Εργασία 3 Σκελετοί Λύσεων Άσκηση 1 Χρησιμοποιούμε τη δομή typedef struct TNode{ int key; struct TNode *left; struct TNode *right; tnode; και υποθέτουμε πως ένα δυαδικό δένδρο είναι υλοποιημένο ως δείκτης

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

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 14 Στοίβες 1 / 14 Στοίβες Η στοίβα είναι μια ειδική περίπτωση γραμμικής λίστας στην οποία οι εισαγωγές

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

Μάθημα 22: Δυαδικά δέντρα (Binary Trees)

Μάθημα 22: Δυαδικά δέντρα (Binary Trees) Trees Page 1 Μάθημα 22: Δυαδικά δέντρα (Binary Trees) Ένα δένδρο είναι δυαδικό αν όλοι οι κόμβοι του έχουν βαθμό (degree)

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

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

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

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

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

Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες) Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 15-1 Περιεχόμενο

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

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες) Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 13-1 Περιεχόμενο

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

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

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

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

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,

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

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Επανάληψη για τις Τελικές εξετάσεις (Διάλεξη 24) Εισαγωγή Το μάθημα EPL032 έχει ως βασικό στόχο την επίλυση προβλημάτων πληροφορικής με την χρήση της γλώσσας προγραμματισμού C. Επομένως πρέπει: Nα κατανοήσετε

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

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 10: Στοίβες:Υλοποίηση& Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση Στοιβών με Δυναμική Δέσμευση Μνήμης - Εφαρμογή Στοιβών 1: Αναδρομικές συναρτήσεις - Εφαρμογή

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

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

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

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

Θεωρητικό Μέρος. 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 ο Σετ Ασκήσεων Θεωρητικό Μέρος:

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

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων κλειδί από ολικά διατεταγμένο σύνολο όπου το κάθε στοιχείο έχει ένα Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου με

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

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

Δομές δεδομένων (2) Αλγόριθμοι Δομές δεδομένων (2) Αλγόριθμοι Παράγωγοι τύποι (struct) σύνοψη προηγουμένων Πίνακες: πολλές μεταβλητές ίδιου τύπου Παράγωγοι τύποι ή Δομές (struct): ομαδοποίηση μεταβλητών διαφορετικού τύπου struct Student

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

Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL

Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL Υλικό από τις σηµειώσεις Ν. Παπασπύρου, 2006 Δέντρα δυαδικής αναζήτησης Δενδρικές δοµές δεδοµένων στις οποίες Όλα τα στοιχεία στο αριστερό υποδέντρο της ρίζας είναι

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

Α2. Να γράψετε στο τετράδιο απαντήσεών σας το κατάλληλο τμήμα κώδικα, κάνοντας τις απαραίτητες αλλαγές σύμφωνα με την εκάστοτε εκφώνηση:

Α2. Να γράψετε στο τετράδιο απαντήσεών σας το κατάλληλο τμήμα κώδικα, κάνοντας τις απαραίτητες αλλαγές σύμφωνα με την εκάστοτε εκφώνηση: ΠΡΟΣΟΜΟΙΩΣΗ ΑΠΟΛΥΤΗΡΙΩΝ ΕΞΕΤΑΣΕΩΝ Γ' ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΗΡΕΣΙΩΝ) ΣΥΝΟΛΟ

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

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

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

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr 1 Μονοδιάστατοι Πίνακες (tables) Μια συλλογή μεταβλητών ίδιου τύπου οι οποίες είναι αποθηκευμένες

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

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Παρατηρήσεις

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

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών :

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών : Δένδρα Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών : Ανάλυση αλγορίθμων (π.χ. δένδρα αναδρομής) Δομές δεδομένων (π.χ. δένδρα αναζήτησης) ακμή Κατηγορίες (αύξουσα

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

Αλγόριθμοι Ταξινόμησης Μέρος 2

Αλγόριθμοι Ταξινόμησης Μέρος 2 Αλγόριθμοι Ταξινόμησης Μέρος 2 Μανόλης Κουμπαράκης 1 Προχωρημένοι Αλγόριθμοι Ταξινόμησης Στη συνέχεια θα παρουσιάσουμε τρείς προχωρημένους αλγόριθμους ταξινόμησης: treesort, quicksort και mergesort. 2

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

Ασκήσεις - Μελέτες περίπτωσης για το μάθημα Προγραμματισμός II

Ασκήσεις - Μελέτες περίπτωσης για το μάθημα Προγραμματισμός II Ασκήσεις - Μελέτες περίπτωσης για το μάθημα Προγραμματισμός II (1) Να καταστρωθεί πρόγραμμα, το οποίο θα διαβάζει δύο αλφαριθμητικά από το πληκτρολόγιο και θα τα μεταβιβάζει στη συνάρτηση str_index(char

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

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

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

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

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

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

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

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 19 Hashing - Κατακερματισμός 1 / 23 Πίνακες απευθείας πρόσβασης (Direct Access Tables) Οι πίνακες απευθείας

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

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

Κεφάλαιο 10 Ψηφιακά Λεξικά Κεφάλαιο 10 Ψηφιακά Λεξικά Περιεχόμενα 10.1 Εισαγωγή... 213 10.2 Ψηφιακά Δένδρα... 214 10.3 Υλοποίηση σε Java... 222 10.4 Συμπιεσμένα και τριαδικά ψηφιακά δένδρα... 223 Ασκήσεις... 225 Βιβλιογραφία...

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

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

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

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

Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ

Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά

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

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

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

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

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

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

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

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη.

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη. 1ΗΣ ΣΕΛΙΔΑΣ ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 2015 Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΗΡΕΣΙΩΝ) ΣΥΝΟΛΟ

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ 2 ο ΣΕΤ ΑΣΚΗΣΕΩΝ Οι ασκήσεις αυτού του φυλλαδίου καλύπτουν τα παρακάτω θέματα: Συναρτήσεις (κεφάλαιο Functions)

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

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

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

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

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Δομές Δεδομένων

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

Εργαστήριο 2: Πίνακες

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Άσκηση αυτοαξιολόγησης 3-4 Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητες 3 & 4: ένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε

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

Διδάσκων: Κωνσταντίνος Κώστα

Διδάσκων: Κωνσταντίνος Κώστα Διάλεξη Ε4: Επανάληψη Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή σε δενδρικές δομές δεδομένων, Δυαδικά Δένδρα Αναζήτησης Ισοζυγισμένα Δένδρα & 2-3 Δένδρα Διδάσκων: Κωνσταντίνος

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

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

Δομές Δεδομένων & Αλγόριθμοι Λίστες Λίστες - Απλά Συνδεδεμένες Λίστες - Διπλά Συνδεδεμένες Λίστες Είδη Γραμμικών Λιστών Σειριακή Λίστα Καταλαμβάνει συνεχόμενες θέσεις κύριας μνήμης Συνδεδεμένη Λίστα Οι κόμβοι βρίσκονται σε απομακρυσμένες

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

Εργαστήριο 2 Δυναμικές Δομές Δεδομένων Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

Εργαστήριο 2 Δυναμικές Δομές Δεδομένων Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι Μεταγλωττιστές Εργαστήριο 2 Δυναμικές Δομές Δεδομένων Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι 2015-1016 Δομές Δεδομένων Μια δομή δεδομένων είναι μια συλλογή δεδομένων με κάποιες ιδιότητες

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

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

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

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

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

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

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

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

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

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

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

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

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

ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ

ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση με τον ορισμό, τη δήλωση και τη χρήση των χαρακτήρων, συνεπώς και των αλφαριθμητικών, της Γλώσσας

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

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων ΠΕΡΙΕΧΟΜΕΝΑ Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων Εισαγωγή Η χρήση των μεταβλητών με δείκτες στην άλγεβρα είναι ένας ιδιαίτερα

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης 1. Στόχος του εργαστηρίου Στόχος του δέκατου εργαστηρίου

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

Εργαστήριο 5. Εαρινό Εξάμηνο

Εργαστήριο 5. Εαρινό Εξάμηνο Τομέας Υλικού και Αρχιτεκτονικής Υπολογιστών ΗΥ134 - Εισαγωγή στην Οργάνωση και Σχεδίαση Η/Υ 1 Εργαστήριο 5 Εαρινό Εξάμηνο 2012-2013 Στό χόι τόυ εργαστηρι όυ Χρήση στοίβας Αναδρομή Δομές δεδομένων Δυναμική

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

Περιεχόμενα. Πρόλογος... 21

Περιεχόμενα. Πρόλογος... 21 Περιεχόμενα Πρόλογος... 21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31

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