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

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

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

Transcript

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

2 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

3 Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Μακεδονίας» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

4 Σκοποί ενότητας Κατανόηση του ΑΤΔ Λίστα. Σειριακή αποθήκευση λίστας Υλοποίηση των βασικών λειτουργιών Να μελετηθεί ο ΑΤΔ λίστα, η υλοποίηση της με πίνακα και δομή καθώς και η υλοποίηση των πράξεων που περιέχει η λίστα. Να μελετηθεί η Συνδεδεμένη Λίστα και να δοθεί η υλοποίηση της με πίνακα και δομή καθώς και η υλοποίηση των πράξεων που περιέχει η Συνδεδεμένη λίστα. 4

5 Περιεχόμενα ενότητας[1] Εισαγωγή στον ΑΤΔ Λίστα Διαφορά λίστας, στοίβας, ουράς Ορισμός ΑΤΔ λίστα Αποθηκευτική δομή ΑΤΔ λίστα Παράδειγμα Εισαγωγής, διαγραφής Ένα πακέτο για τον ΤΔ λίστα (σειριακή αποθήκευση) 5

6 Περιεχόμενα ενότητας[2] Εισαγωγή ΑΤΔ Συνδεδεμένη Λίστα Βασικές λειτουργίες συνδεδεμένων λιστών Δημιουργία κενής Σ.Λ. Έλεγχος κενής ΣΛ Εισαγωγή Διαγραφή Διάσχιση 6

7 Περιεχόμενα ενότητας[3] Εισαγωγή Συνδεδεμένη Λίστα με πίνακα Δηλώσεις Παράδειγμα Δεξαμενή διαθέσιμων κόμβων Αρχικοποίηση δεξαμενής Πακέτο για τη Συνδεδεμένη λίστα με πίνακα 7

8 Εισαγωγή Ως δομή δεδομένων, μια λίστα (list) είναι μια πεπερασμένη αλληλουχία στοιχείων. Αν και οι βασικές λειτουργίες που συνδέονται με τις λίστες διαφέρουν ανάλογα με την εφαρμογή, συνήθως περιλαμβάνουν τα ακόλουθα: Δημιουργία κενής λίστας Έλεγχος αν μια λίστα είναι κενή Διάσχιση της λίστας ή τμήματός της για προσπέλαση και επεξεργασία των στοιχείων με τη σειρά Εισαγωγή ενός νέου στοιχείου στη λίστα Διαγραφή κάποιου στοιχείου από τη λίστα. 8

9 Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση 9

10 Διαφορά λίστας, στοίβας και ουράς Βασική διαφορά της λίστας από την στοίβα και την ουρά: η λίστα είναι προσπελάσιμη σε οποιαδήποτε θέση της, η στοίβα είναι προσπελάσιμη μόνο στο ένα άκρο της, η ουρά είναι προσπελάσιμη στα δύο άκρα της. Έτσι, λοιπόν, η εισαγωγή ενός στοιχείου σε μια λίστα μπορεί να γίνει σε οποιαδήποτε θέση της (ανάλογα με το πρόβλημα) και η διαγραφή ενός στοιχείου μπορεί να γίνει από οποιαδήποτε θέση της. 10

11 Ορισμός του ΑΤΔ Λίστα -1- Συλλογή στοιχείων δεδομένων: Μια ακολουθία στοιχείων δεδομένων σε γραμμική διάταξη. Βασικές λειτουργίες: Δημιουργία κενής λίστας (CreateList) Λειτουργία: Δημιουργεί μια κενή λίστα. Επιστρέφει: Μια κενή λίστα. 11

12 Ορισμός του ΑΤΔ Λίστα -2- Έλεγχος κενής λίστας(emptylist) Δέχεται: Μια λίστα. Λειτουργία: Ελέγχει αν η λίστα είναι κενή. Επιστρέφει: TRUE, αν η λίστα είναι κενή, FALSE διαφορετικά. 12

13 Ορισμός του ΑΤΔ Λίστα -3- Διάσχιση (Traverse) Δέχεται: Μια λίστα. Λειτουργία: Διασχίζει τη λίστα (ή τμήμα της) για προσπέλαση και επεξεργασία των στοιχείων με τη σειρά. Επιστρέφει: Εξαρτάται από το είδος της επεξεργασίας. 13

14 Ορισμός του ΑΤΔ Λίστα -4- Διάσχιση (Traverse) Δέχεται: Μια λίστα. Λειτουργία: Διασχίζει τη λίστα (ή τμήμα της) για προσπέλαση και επεξεργασία των στοιχείων με τη σειρά. Επιστρέφει: Εξαρτάται από το είδος της επεξεργασίας. 14

15 Ορισμός του ΑΤΔ Λίστα -5- Διαγραφή στοιχείου (Delete) Δέχεται: Μια λίστα και μια θέση μέσα στη λίστα. Λειτουργία: Διαγράφει το στοιχείο από την συγκεκριμένη θέση της λίστας. Επιστρέφει: Την τροποποιημένη λίστα. 15

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

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

18 Αποθηκευτική Δομή -3- Θα αναφερόμαστε σε αυτήν την υλοποίηση λίστας ως την υλοποίηση λίστας με σειριακή αποθήκευση (sequential storage implemention of lists). 18

19 Αποθηκευτική Δομή -4- Μια λίστα και τα στοιχεία της μπορούν να αποθηκευτούν με τη χρήση μιας εγγραφής, όπως φαίνεται παρακάτω: #define ListLimit 50 typedef struct { int Size; ListElementType Element[ListLimit]; } ListType; 19

20 Κενή λίστα Οι τρεις πρώτες βασικές λειτουργίες της λίστας είναι εύκολο να υλοποιηθούν. Αν η List είναι τύπου ListType τότε: Δημιουργία κενής λίστας (CreateList): Μια κενή λίστα δημιουργείται θέτοντας List.Size = 0. Έλεγχος κενής λίστας (EmptyList): Αν θεωρήσουμε ότι υπάρχει μια boolean συνάρτηση EmptyList, τότε μπορεί να πάρει τιμή TRUE ή FALSE αν η συνθήκη EmptyList == (List.Size=0) είναι αληθής ή ψευδής αντίστοιχα 20

21 Διάσχιση λίστας Traverse: Η διάσχιση της λίστας για π.χ. εμφάνιση των στοιχείων της μπορεί να γίνει με τον ακόλουθο βρόχο: Για i από 0 μέχρι List.Size - 1 Γράψε List.Element[i] Τέλος_επανάληψης 21

22 Παράδειγμα Για να δούμε πώς λειτουργούν οι διαδικασίες εισαγωγής και διαγραφής στοιχείων από την ή στην λίστα, ας θεωρήσουμε μια λίστα ταξινομημένων ακεραίων αριθμών με αύξουσα διάταξη όπως η ακόλουθη: 4, 12, 37, 40, 49, 63, 71 Η λίστα αυτή μπορεί να αποθηκευτεί με την μορφή πίνακα ως εξής: List θέση αριθμός

23 Παράδειγμα: Εισαγωγή Έστω ότι θέλουμε να προσθέσουμε ένα νέο αριθμό στην λίστα, π.χ. τον 28. Επειδή θέλουμε τα στοιχεία της λίστας να είναι ταξινομημένα κατά αύξουσα σειρά, θα πρέπει να μετατοπίσουμε κατά μία θέση δεξιά τα στοιχεία που βρίσκονται δεξιά του 12, ώστε να δημιουργηθεί μια ελεύθερη θέση μεταξύ του 12 και του 37 και να τοποθετηθεί εκεί ο αριθμός 28, όπως φαίνεται παρακάτω: List θέση αριθμός

24 Παράδειγμα: λίστα γεμάτη; Πριν προχωρήσουμε στην εισαγωγή του νέου στοιχείου στη λίστα, θα πρέπει να εξετάσουμε αν υπάρχει χώρος για αυτό το νέο στοιχείο, δηλαδή αν η λίστα δεν είναι γεμάτη. Ενώ, λοιπόν, θεωρητικά μια λίστα είναι απεριόριστη και μπορούμε να εισάγουμε όσα στοιχεία θέλουμε σ' αυτήν, εδώ περιοριζόμαστε από το μέγεθος του πίνακα με τον οποίο υλοποιούμε την λίστα. 24

25 Συνάρτηση για λίστα γεμάτη; Επομένως, είναι απαραίτητο να συμπεριληφθεί και μια συνάρτηση FullList στο πακέτο για τον ΑΤΔ Λίστα, η οποία να εξετάζει αν προκλήθηκε κάποιο σφάλμα στην προσπάθεια εισαγωγής ενός νέου στοιχείου στη λίστα. 25

26 Παράδειγμα: Διαγραφή Έστω τώρα ότι θέλουμε να διαγράψουμε τον αριθμό 12 από τη λίστα που είχαμε προηγουμένως. Η διαγραφή αυτή συνεπάγεται και μετατόπιση κατά μία θέση προς τα αριστερά των αριθμών που βρίσκονταν δεξιά του 12. List θέση αριθμός

27 // Filename ListADT.h #define ListLimit 50 typedef int ListElementType; typedef struct { } ListType; int Size; ListElementType Element[ListLimit]; typedef enum { } boolean; Ένα πακέτο για τη Λίστα με FALSE, TRUE πίνακα -1-27

28 Ένα πακέτο για τη Λίστα με πίνακα -2- void CreateList(ListType *List); boolean EmptyList(ListType List); boolean FullList(ListType List); void Insert(ListType *List, ListElementType Item, int Pos); void Delete(ListType *List, int Pos); void TraverseList(ListType List); 28

29 Ένα πακέτο για τη Λίστα με // Filename ListADT.c πίνακα -3- void CreateList(ListType *List) /*Λειτουργία: Δημιουργεί μια κενή λίστα. Επιστρέφει: Μια κενή λίστα*/ { (*List).Size = 0; } 29

30 Ένα πακέτο για τη Λίστα με πίνακα -4- boolean EmptyList(ListType List) /*Δέχεται: Μια λίστα List. Λειτουργία: Ελέγχει αν η λίστα List είναι κενή. Επιστρέφει: TRUE αν η λίστα List είναι άδεια, FALSE διαφορετικά.*/ { return (List.Size == 0); } 30

31 Ένα πακέτο για τη Λίστα με πίνακα -5- boolean FullList(ListType List) /*Δέχεται: Μια λίστα List. Λειτουργία: Ελέγχει αν η λίστα List είναι γεμάτη. Επιστρέφει: TRUE αν η λίστα List είναι γεμάτη, FALSE διαφορετικά.*/ { return (List.Size == (ListLimit)); } 31

32 Ένα πακέτο για τη Λίστα με void πίνακα -6- Insert(ListType *List, ListElementType Item, int Pos) /*Δέχεται: Μια λίστα List, ένα στοιχείο Item και μια θέση Pos μέσα στη λίστα. Λειτουργία: Εισάγει το στοιχείο Item στη λίστα List μετά από το στοιχείο που βρίσκεται στη θέση Pos (αν η λίστα είναι κενή τότε Pos=0). Επιστρέφει: Την τροποποιημένη λίστα. Έξοδος: Μήνυμα λάθους στην περίπτωση που η εισαγωγή αποτύχει.*/. 32

33 Ένα πακέτο για τη Λίστα με πίνακα -7- { } int i; if (FullList(*List)) printf("full list...\n"); else { for (i= (*List).Size-1; i>=pos+1;i- -) (*List).Element[i+1] = (*List).Element[i]; (*List).Element[Pos+1] = Item; (*List).Size++; } 33

34 Ένα πακέτο για τη Λίστα με πίνακα -8- void Delete(ListType *List, int Pos) /*Δέχεται: Μια λίστα List και μια θέση Pos μέσα στη λίστα. Λειτουργία: Διαγράφει το στοιχείο από τη θέση Pos της λίστας List. Επιστρέφει: Την τροποποιημένη λίστα. Έξοδος: Μήνυμα λάθους στην περίπτωση που η διαγραφή αποτύχει.*/ 34

35 Ένα πακέτο για τη Λίστα με πίνακα -9- { } int i; if (EmptyList(*List)) printf("empty list...\n"); else { for (i = Pos; i< (*List).Size-1; i++) (*List).Element[i] = (*List).Element[i+1]; } (*List).Size--; 35

36 Αποδοτικότητα της διαδικασίας Insert -1- Η αποδοτικότητα της διαδικασίας Insert εξαρτάται από το πλήθος των στοιχείων του πίνακα που πρέπει να μετακινηθούν προκειμένου να δημιουργηθεί κενή θέση για το νέο στοιχείο. 36

37 Αποδοτικότητα της διαδικασίας Insert -2- Στην καλύτερη περίπτωση το νέο στοιχείο πρέπει να εισαχθεί στο τέλος της λίστας, οπότε δεν χρειάζεται να μετακινηθεί κανένα από τα στοιχεία του πίνακα. Στην χειρότερη περίπτωση το νέο στοιχείο πρέπει να εισαχθεί στην αρχή της λίστας, πράγμα το οποίο συνεπάγεται μετατόπιση όλων των στοιχείων της λίστας. Επομένως, αν το μέγεθος της λίστας είναι n τότε κατά μέσο όρο πρέπει να μετακινηθούν n/2 στοιχεία του πίνακα για την εισαγωγή ενός νέου στοιχείου. 37

38 Αποδοτικότητα της διαδικασίας Insert -3- Βέβαια, όλα τα παραπάνω ισχύουν εφόσον μας ενδιαφέρει η σειρά των στοιχείων στη λίστα. Αν η σειρά δεν μας ενδιαφέρει, τότε η εισαγωγή νέων στοιχείων μπορεί να γίνει σε οποιαδήποτε θέση της λίστας και μάλιστα βολεύει να γίνεται στο τέλος της. Για μια τέτοια λίστα η εισαγωγή στοιχείου είναι ίδια με την ώθηση ενός στοιχείου σε μια στοίβα. 38

39 Αποδοτικότητα της διαδικασίας Delete Η αποδοτικότητα της διαδικασίας Delete εξαρτάται και αυτή από το πλήθος των στοιχείων του πίνακα που πρέπει να μετακινηθούν μετά τη διαγραφή του στοιχείου: Στη καλύτερη περίπτωση το στοιχείο διαγράφεται από το τέλος της λίστας, οπότε δεν χρειάζεται να μετακινηθεί κανένα από τα στοιχεία του πίνακα. Στην χειρότερη περίπτωση το στοιχείο διαγράφεται από την αρχή της λίστας, πράγμα το οποίο συνεπάγεται μετατόπιση όλων των στοιχείων της λίστας. Επομένως, και πάλι ο μέσος όρος μετακινήσεων που πρέπει να γίνουν είναι n/2. 39

40 Ο ΑΤΔ Συνδεδεμένη Λίστα 40

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

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

43 Εισαγωγή -3- Στην ενότητα αυτή, θεωρούμε μια εναλλακτική υλοποίηση λίστας, στην οποία η διάταξη των στοιχείων δίνεται ρητά. 43

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

45 Εισαγωγή -5- Στην υλοποίηση με σειριακή αποθήκευση η διάταξη δίνεται σιωπηρά από τους δείκτες του πίνακα, δηλαδή το πρώτο στοιχείο της λίστας αποθηκεύεται στην θέση 1 του πίνακα, το δεύτερο στοιχείο στην θέση 2, κλπ, και το επόμενο του στοιχείου της θέσης i βρίσκεται στην θέση i+1 του πίνακα. 45

46 Εισαγωγή -6- Μια δομή αποθήκευσης στοιχείων λίστας στην οποία η διάταξη δίνεται ρητά ονομάζεται συνδεδεμένη λίστα (linked lists). Μια συνδεδεμένη λίστα είναι μια συλλογή στοιχείων, που ονομάζονται κόμβοι (nodes), και σε κάθε κόμβο αποθηκεύονται δύο είδη πληροφορίας: Ένα στοιχείο της λίστας Ένας δεσμός (link) ή δείκτης (pointer) που δείχνει ρητά τη θέση του κόμβου που περιέχει το επόμενο στοιχείο της λίστας Επίσης, πρέπει να διατηρείται πρόσβαση στον κόμβο όπου είναι αποθηκευμένο το πρώτο στοιχείο της λίστας. 46

47 Παράδειγμα -1- Έστω ότι έχουμε μια συνδεδεμένη λίστα όπου αποθηκεύουμε τα ονόματα Ελένη, Μαρία και Φωτεινή, όπως φαίνεται στο παρακάτω σχήμα. Στο σχήμα αυτό, τα βέλη παριστάνουν τους δεσμούς και ο δείκτης List δείχνει στον πρώτο κόμβο της λίστας. 47

48 Παράδειγμα -2- Στο σχήμα αυτό, τα βέλη παριστάνουν τους δεσμούς και ο δείκτης List δείχνει στον πρώτο κόμβο της λίστας. Στο τμήμα δεδομένων (Data) του κάθε κόμβου αποθηκεύεται ένα από τα ονόματα της λίστας και η κουκίδα στον τελευταίο κόμβο που δεν έχει βέλος να ξεκινάει από αυτήν αντιπροσωπεύει έναν μηδενικό δείκτη (nil pointer) και δηλώνει ότι δεν υπάρχει επόμενο γι' αυτό το στοιχείο. 48

49 Παράδειγμα -3- Αν με p συμβολίσουμε το δείκτη προς κάποιο κόμβο αυτής της λίστας, τότε θα δηλώνουμε το τμήμα δεδομένου του κόμβου ως Data(p) και το τμήμα δεσμού ως Next(p). Επίσης, θα θεωρούμε ότι NilValue είναι μια ειδική τιμή που μπορεί να δοθεί στο p για να δείξει ότι είναι μηδενικός δείκτης, δηλαδή δε δείχνει σε κανένα κόμβο. 49

50 Βασικές λειτουργίες -1- Δημιουργία κενής λίστας CreateList Για να δημιουργήσουμε μια κενή λίστα αρκεί να θέσουμε την τιμή NilValue στον δείκτη List για να δείξουμε ότι δεν δείχνει σε κανένα κόμβο,δηλαδή: List Έλεγχος κενής λίστας - EmptyList Για να καθορίσουμε αν η λίστα είναι κενή μπορούμε απλά να εξετάσουμε αν ο δείκτης List έχει την τιμή NilValue. 50

51 Βασικές λειτουργίες -2- Διάσχιση λίστας Traverse Έστω ότι θέλουμε να διασχίσουμε μια λίστα όπως η παραπάνω λίστα ονομάτων. Χρησιμοποιούμε έναν βοηθητικό δείκτη CurrP, ο οποίος δείχνει αρχικά στον πρώτο κόμβο, και επεξεργαζόμαστε το στοιχείο Ελένη που είναι αποθηκευμένο στον κόμβο αυτό. Για να μετακινηθούμε στον επόμενο κόμβο και να επεξεργαστούμε το στοιχείο Μαρία, ακολουθούμε τον δεσμό του τρέχοντος κόμβου (Next(CurrP)) θέτοντας CurrP=Next(CurrP). Ομοίως, για να επεξεργαστούμε το επόμενο στοιχείο, Φωτεινή, θέτουμε πάλι CurrP=Next(CurrP), οπότε ο CurrP δείχνει τώρα στον τρίτο κόμβο της λίστας. Το στοιχείο Φωτεινή είναι το τελευταίο της λίστας, οπότε αν θέσουμε πάλι CurrP=Next(CurrP), ο CurrP γίνεται μηδενικός και καταλαβαίνουμε ότι φτάσαμε στο τέλος της λίστας. 51

52 Βασικές λειτουργίες -3- Εισαγωγή στοιχείου Insert Για να εισαγάγουμε ένα νέο στοιχείο στη λίστα, χρειάζεται πρώτα να αποκτήσουμε ένα νέο κόμβο, ώστε να αποθηκεύσουμε την τιμή του στοιχείου στο τμήμα δεδομένου του κόμβου αυτού. Υποθέτουμε ότι υπάρχει μια δεξαμενή (storage pool) διαθέσιμων κόμβων καθώς και ένας μηχανισμός απόκτησης τέτοιων κόμβων από τη δεξαμενή. 52

53 Βασικές λειτουργίες -4- Υποθέτουμε, δηλαδή, ότι υπάρχει μια διαδικασία GetNode η οποία, αν κληθεί με μια πρόταση της μορφής GetNode(TempP), θα επιστρέψει έναν προσωρινό δείκτη TempP προς έναν διαθέσιμο κόμβο. Το επόμενο βήμα είναι να συνδεθεί αυτός ο κόμβος με την υπάρχουσα λίστα. Διακρίνουμε δύο περιπτώσεις: α) η εισαγωγή να γίνει στην αρχή της λίστας β) η εισαγωγή να γίνει μετά από κάποιο στοιχείο της λίστας 53

54 Βασικές λειτουργίες -5- Α) Εισαγωγή στοιχείου στην αρχή της λίστας Έστω ότι θέλουμε να εισαγάγουμε το όνομα Δήμητρα στην αρχή της λίστας. Κατ' αρχήν 1. παίρνουμε έναν νέο κόμβο με την εντολή GetNode(TempP), στον οποίο δείχνει προσωρινά ο δείκτης TempP, και 2. αποθηκεύουμε την τιμή Δήμητρα στο τμήμα δεδομένου του θέτοντας Data(TempP)='Δήμητρα'. Στη συνέχεια, 3. εισάγουμε τον κόμβο αυτό στην αρχή της λίστας κάνοντας το τμήμα δεσμού του να δείχνει στον πρώτο κόμβο της λίστας, δηλαδή θέτουμε Next(TempP)=List, και, τέλος, 4. θέτουμε List=TempP ώστε ο List να δείχνει στον νέο κόμβο. 54

55 Βασικές λειτουργίες -6- Συνολικά, δηλαδή, εκτελούμε τις ακόλουθες εντολές: 1. GetNode(TempP) 2. Data(TempP)='Δήμητρα' 3. Next(TempP)=List 4. List=TempP 55

56 Βασικές λειτουργίες -7- Εισαγωγή στοιχείου στην αρχή της λίστας ( συνέχεια) 1. GetNode(TempP) 2. Data(TempP)='Δήμητρα' 3. Next(TempP)=List 4. List=TempP 56

57 Βασικές λειτουργίες -8- Β) Εισαγωγή μετά από κάποιο στοιχείο της λίστας Έστω ότι θέλουμε να εισαγάγουμε το όνομα Βάσω μετά από τον κόμβο που περιέχει το όνομα Μαρία και ότι ο δείκτης PredP δείχνει σ' αυτόν τον κόμβο: 1. Παίρνουμε πάλι έναν νέο κόμβο με την εντολή GetNode(TempP), στον οποίο δείχνει προσωρινά ο δείκτης TempP, και 2. αποθηκεύουμε την τιμή Στέλλα στο τμήμα δεδομένου του θέτοντας Data(TempP)='Βάσω'. Εισάγουμε τον κόμβο αυτό στη λίστα και 3. θέτουμε το τμήμα δεσμού του ίσο με Next(PredP) ώστε να δείχνει στον επόμενο του κόμβου που περιέχει το όνομα Μαρία με την εντολή Next(TempP)=Next(PredP) και 4. αλλάζουμε το τμήμα δεσμού τού προηγούμενου κόμβου ώστε να δείχνει στον νέο κόμβο, δηλαδή θέτουμε Next(PredP)=TempP.. 57

58 Βασικές λειτουργίες -9- Συνολικά, δηλαδή, εκτελούμε τις ακόλουθες εντολές: 1. GetNode(TempP) 2. Data(TempP)='Βάσω 3. Next(TempP)=Next(PredP) 4. Next(PredP)=TempP 58

59 Βασικές λειτουργίες -10- Εισαγωγή στοιχείου στην αρχή της λίστας ( συνέχεια) 1. GetNode(TempP) 2. Data(TempP)='Βάσω 3. Next(TempP)=Next(PredP) 4. Next(PredP)=TempP 59

60 Βασικές λειτουργίες -11- Διαγραφή στοιχείου Delete Στην διαγραφή ενός στοιχείου από μια λίστα έχουμε πάλι δύο περιπτώσεις: α) διαγραφή του πρώτου στοιχείου της λίστας β) διαγραφή ενός στοιχείου από κόμβο για τον οποίο υπάρχει κάποιος προηγούμενος κόμβος 60

61 Βασικές λειτουργίες -12- Α) Διαγραφή του πρώτου στοιχείου της λίστας Έστω ότι θέλουμε να διαγράψουμε το στοιχείο Ελένη που βρίσκεται στην αρχή της λίστας του Σχήματος 61

62 Βασικές λειτουργίες -13- Α) Διαγραφή του πρώτου στοιχείου της λίστας Αυτό είναι πολύ εύκολο να γίνει αν αλλάξουμε τον δείκτη List ώστε να δείχνει στον δεύτερο κόμβο της λίστας, θέτοντας TempP=List και μετά List=Next(List), και να επιστρέψουμε τον διαγραμμένο κόμβο στην δεξαμενή με τους διαθέσιμους κόμβους καλώντας μια διαδικασία ReleaseNode, δηλαδή ReleaseNode(TempP). 62

63 Βασικές λειτουργίες -14- Α) Διαγραφή του πρώτου στοιχείου της λίστας Συνολικά,δηλαδή, εκτελούμε τις ακόλουθες εντολές: TempP=List List=Next(List) ReleaseNode(TempP) 63

64 Βασικές λειτουργίες -15- Β) Διαγραφή στοιχείου από κόμβο για τον οποίο υπάρχει κάποιος προηγούμενος κόμβος Έστω ότι θέλουμε να διαγράψουμε τον κόμβο με το όνομα Μαρία της λίστας του Σχήματος 64

65 Βασικές λειτουργίες -16- Β) Διαγραφή στοιχείου από κόμβο για τον οποίο υπάρχει κάποιος προηγούμενος κόμβος Το μόνο που χρειάζεται να κάνουμε είναι να δείχνει ο προηγούμενος κόμβος αυτού που θέλουμε να διαγραφεί στον επόμενό του, δηλαδή TempP=Next(PredP) και μετά Next(PredP)=Next(TempP), και, τέλος, να καλέσουμε την ReleaseNode για να επιστρέψουμε τον διαγραμμένο κόμβο στη δεξαμενή των διαθέσιμων κόμβων, ReleaseNode(TempP). 65

66 Βασικές λειτουργίες -17- Β) Διαγραφή στοιχείου από κόμβο για τον οποίο υπάρχει κάποιος προηγούμενος κόμβος Συνολικά, δηλαδή, εκτελούμε τις ακόλουθες εντολές: TempP=Next(PredP) Next(PredP)=Next(TempP) ReleaseNode(TempP) 66

67 Πλεονέκτημα των συνδεδεμένων λιστών Οι εισαγωγές και διαγραφές στοιχείων μπορούν να γίνουν σε οποιαδήποτε θέση της λίστας ανεξάρτητα από το πλήθος των στοιχείων της και χωρίς μετατοπίσεις στοιχείων.. 67

68 Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα 68

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

70 Εισαγωγή -2- Οι κόμβοι μιας συνδεδεμένης λίστας περιλαμβάνουν: το τμήμα δεδομένου (Data), όπου αποθηκεύεται ένα στοιχείο της λίστας, και το τμήμα δεσμού (Link), όπου αποθηκεύεται ένας δείκτης, ο οποίος είτε δείχνει στον επόμενο κόμβο της λίστας είτε είναι μηδενικός, στην περίπτωση που είναι ο δείκτης του τελευταίου κόμβου. 70

71 Εισαγωγή -3- Κάθε κόμβος μπορεί να παρασταθεί με μια εγγραφή και η συνδεδεμένη λίστα με έναν πίνακα τέτοιων εγγραφών. Κάθε εγγραφή θα αποτελείται: από ένα πεδίο Data, για την αποθήκευση του στοιχείου, και ένα πεδίο Link, για την αποθήκευση του δείκτη που δείχνει τη θέση του επόμενου κόμβου μέσα στον πίνακα. 71

72 Δηλώσεις -1- #define NumberOfNodes 50 /*μέγεθος της δεξαμενής κόμβων (λίστας*/ #define NilValue 0 /*ειδική μηδενική τιμή, δείχνει το τέλος της Σ.Λ*/ typedef int ListElementType; /*ο τύπος των στοιχείων της λίστας*/ typedef int ListPointer; typedef struct { ListElementType Data; ListPointer Next; } NodeType; /*ο τύπος των δεικτών*/ 72

73 Δηλώσεις -2- /*δήλωση μεταβλητών */ NodeType Node[NumberOfNodes+1]; /*η δεξαμενή των διαθέσιμων κόμβων*/ ListPointer FreePtr; /*δείκτης για τον πρώτο διαθέσιμο κόμβο*/ 73

74 Παράδειγμα -1- Ας πάρουμε πάλι τη λίστα ονομάτων: List είναι μια μεταβλητή τύπου LinkedListType και δείχνει στον πρώτο κόμβο, γιατί σ' αυτήν αποθηκεύεται η θέση του στον πίνακα Node. Αν υποθέσουμε ότι NumberOfNodes=10, τότε ο πίνακας Node αποτελείται από 10 εγγραφές τύπου NodeType. Οι κόμβοι της ΣΛ μπορούν να είναι αποθηκευμένοι σε οποιεσδήποτε θέσεις του πίνακα αυτού αρκεί οι δεσμοί τους να έχουν τις σωστές τιμές και η List να δείχνει πάντα στον πρώτο κόμβο. 74

75 Παράδειγμα -2- Για παράδειγμα, ο πρώτος κόμβος μπορεί να βρίσκεται στη θέση 7, ο δεύτερος στη θέση 3 και ο τρίτος στη θέση 6, όπως φαίνεται στο παρακάτω σχήμα. List=7. Στη θέση Node[7].Data βρίσκεται το αλφαριθμητικό Ελένη και στη θέση Node[7].Next βρίσκεται η τιμή 3. Δεύτερος κόμβος στη θέση Node[3].Data βρίσκεται το αλφαριθμητικό Μαρία και στη θέση Node[3].Next η τιμή 6. Τρίτο κόμβος Node[6].Data=Φωτεινή και Node[6].Next=0, πρόκειται για τον τελευταίο κόμβο που δεν έχει επόμενο και γι' αυτό έχει μηδενικό δείκτη. 75

76 Διάσχιση της λίστας Για να διασχίσουμε τη λίστα και να εμφανίσουμε όλα τα ονόματα με τη σειρά, βρίσκουμε τη θέση του πρώτου κόμβου χρησιμοποιώντας το δείκτη List: List=7, το πρώτο στοιχείο της λίστας είναι το Node[7].Data και εμφανίζεται το όνομα Ελένη. Ακολουθώντας το δεσμό του κόμβου αυτού βρίσκουμε ότι το επόμενο στοιχείο βρίσκεται στη θέση Node[7].Next=3, δηλαδή είναι το στοιχείο Node[3].Data=Μαρία. Το επόμενο στοιχείο της λίστας βρίσκεται στη θέση Node[3].Next=6 και είναι το όνομα Node[6].Data=Φωτεινή. Η τιμή 0 για το Node[6].Next δείχνει ότι αυτό το στοιχείο είναι το τελευταίο της λίστας. 76

77 Παράδειγμα ( συνέχεια) Έστω ότι θέλουμε να εισαγάγουμε το όνομα Στέλλα μετά από το όνομα Μαρία. Πρώτα πρέπει να αποκτήσουμε ένα νέο κόμβο από τους 7 που είναι διαθέσιμοι. Υποθέτουμε ότι έχουμε διαθέσιμη μια συνάρτηση GetNode η οποία μας επιστρέφει την τιμή 9 ως κενή θέση για το νέο στοιχείο. Σύμφωνα, λοιπόν, με τη διαδικασία εισαγωγής έχουμε: Node[9].Data='Στέλλα Node[9].Next=6 Node[3].Next=9 και ο πίνακας Node είναι τώρα ο διπλανός: 77

78 Δεξαμενή διαθέσιμων κόμβων -1- Τα στοιχεία του πίνακα Node είναι δύο ειδών: σε κάποιες θέσεις υπάρχουν αποθηκευμένα στοιχεία της λίστας, ενώ οι υπόλοιπες είναι κενές και αποτελούν τις ελεύθερες θέσεις για εισαγωγή νέων στοιχείων. Η οργάνωση των κόμβων που περιέχουν στοιχεία έχει περιγραφεί παραπάνω, μένει, λοιπόν, να περιγράψουμε τον τρόπο οργάνωσης της δεξαμενής των διαθέσιμων κόμβων. 78

79 Δεξαμενή διαθέσιμων κόμβων -2- Η δεξαμενή μπορεί να οργανωθεί σαν μια ΣΛ. Αρχικά όλοι οι κόμβοι είναι διαθέσιμοι, οπότε πρέπει να συνδεθούν μεταξύ τους για να σχηματίσουν τη δεξαμενή. Για να γίνει αυτό μπορούμε να θέσουμε ως πρώτο κόμβο αυτόν που βρίσκεται στην πρώτη θέση, ως δεύτερο κόμβο αυτόν που βρίσκεται στη δεύτερη θέση, κ.ο.κ., κι επομένως, ο πρώτος κόμβος δείχνει στο δεύτερο, ο δεύτερος στον τρίτο, κ.ο.κ. και ο τελευταίος θα έχει μηδενικό δείκτη. Τέλος, ένας δείκτης FreePtr θα έχει τιμή 1 για να δείχνει στον πρώτο κόμβο. 79

80 Αρχικοποίηση της δεξαμενής Ο πίνακας Node θα είναι αρχικά: Η κλήση GetNode(TempPtr) επιστρέφει τη θέση ενός διαθέσιμου κόμβου θέτοντας TempPtr=FreePtr και διαγράφει αυτόν από τη λίστα των διαθέσιμων κόμβων θέτοντας FreePtr=Node[FreePtr].Next. 80

81 Εισαγωγή στοιχείου -1- Αν το πρώτο στοιχείο που πρόκειται να εισαχθεί είναι το όνομα Κατερίνα θα αποθηκευτεί στην πρώτη θέση του πίνακα Node, αφού FreePtr=1. Η μεταβλητή List θα έχει τιμή 1 και η FreePtr θα πάρει τώρα την τιμή 2, όπως φαίνεται παρακάτω: 81

82 Εισαγωγή στοιχείου -2- Αν το επόμενο όνομα που θα εισαχθεί είναι το Ειρήνη, τότε θα τοποθετηθεί στην δεύτερη θέση, γιατί η τιμή της FreePtr είναι τώρα 2. Στη συνέχεια η FreePtr θα γίνει ίση με 3 και, αν μας ενδιαφέρει τα ονόματα να είναι με αλφαβητική σειρά, τότε η List θα πάρει την τιμή 2, η Node[2].Next την τιμή 1 και η Node[1].Next την τιμή 0: 82

83 Εισαγωγή στοιχείου -3- Αν τώρα θέλουμε να εισαγάγουμε το όνομα Μαρία, τότε θα τοποθετηθεί στη θέση FreePtr=3, η FreePtr θα γίνει ίση με 4, η Node[1].Next θα πάρει την τιμή 3 και η Node[3].Next θα είναι μηδενική: 83

84 Διαγραφή κόμβου Όταν διαγράφουμε έναν κόμβο, τότε αυτός πρέπει να επιστρέψει στη δεξαμενή των διαθέσιμων κόμβων με μια διαδικασία ReleaseNode. Η κλήση ReleaseNode(TempPtr) εισάγει τον κόμβο στον οποίο δείχνει η TempPtr στην αρχή της λίστας των διαθέσιμων κόμβων θέτοντας FreePtr=TempPtr. 84

85 Διαγραφή κόμβου -1- Όταν διαγράφουμε έναν κόμβο, τότε αυτός πρέπει να επιστρέψει στη δεξαμενή των διαθέσιμων κόμβων με μια διαδικασία ReleaseNode. Η κλήση ReleaseNode(TempPtr) εισάγει τον κόμβο στον οποίο δείχνει η TempPtr στην αρχή της λίστας των διαθέσιμων κόμβων θέτοντας FreePtr=TempPtr. 85

86 Διαγραφή κόμβου -2- Αν, για παράδειγμα, θέλουμε να διαγράψουμε το στοιχείο Κατερίνα, τότε θέτουμε Node[1].Next=FreePtr και FreePtr=1. Ο πίνακας Node είναι τώρα όπως φαίνεται δεξιά: 86

87 Διαγραφή κόμβου -3- Εδώ πρέπει να σημειωθεί ότι δεν είναι απαραίτητο να διαγράψουμε πραγματικά τη λέξη Κατερίνα από τον κόμβο, γιατί αλλάζοντας το δεσμό του προηγούμενου κόμβου, αφαιρεί λογικά τον κόμβο από την συνδεδεμένη λίστα. Το αλφαριθμητικό Κατερίνα θα διαγραφεί πραγματικά όταν θα αποθηκευτεί στη θέση αυτή ένα άλλο αλφαριθμητικό. 87

88 Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -1- // Filename L_ListADT.h #define NumberOfNodes 50 /*μέγεθος της δεξαμενής κόμβων (λίστας*/ #define NilValue 0 /*ειδική μηδενική τιμή, δείχνει το τέλος της Σ.Λ*/ typedef int ListElementType; /*ο τύπος των στοιχείων της ΣΛ*/ typedef int ListPointer; /*ο τύπος των δεικτών*/ 88

89 Πακέτο για τον ΑΤΔ Συνδεδεμένη typedef struct { ListElementType Data; ListPointer Next; } NodeType; typedef enum { FALSE, TRUE } boolean; Λίστα με πίνακα -2-89

90 Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -3- void InitializeStoragePool(NodeType Node[ ], ListPointer *FreePtr); void CreateLList(ListPointer *List); boolean EmptyLList(ListPointer List); boolean FullLList(ListPointer FreePtr); void GetNode(ListPointer *P, ListPointer *FreePtr, NodeType Node[ ]); void ReleaseNode(NodeType Node[ ], ListPointer P, ListPointer *FreePtr); 90

91 Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -4- void Insert(ListPointer *List, NodeType Node[ ], ListPointer *FreePtr, ListPointer PredPtr, ListElementType Item); void Delete(ListPointer *List, NodeType Node[], ListPointer *FreePtr, ListPointer PredPtr); void TraverseLinked(ListPointer List, NodeType Node[ ]); 91

92 Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -5- void InitializeStoragePool(NodeType Node[ ], ListPointer *FreePtr); /*Δέχεται: Τον πίνακα Node και τον δείκτη FreePtr που δείχνει στον πρώτο διαθέσιμο κόμβο. Λειτουργία: Αρχικοποιεί τον πίνακα Node ως συνδεδεμένη λίστα συνδέοντας μεταξύ τους διαδοχικές εγγραφές του πίνακα, και αρχικοποιεί τον δείκτη FreePtr. Επιστρέφει: Τον τροποποιημένο πίνακα Node και τον δείκτη FreePtr του πρώτου διαθέσιμου κόμβου.*/ 92

93 { } Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -6- int i; for (i=1; I < NumberOfNodes; i++) { Node[i].Next = i+1; Node[i].Data = -1; /* δεν είναι αναγκαίο η απόδοση αρχικής τιμής στο πεδίο των δεδομένων */ } Node[NumberOfNodes].Next = NilValue ; Node[NumberOfNodes].Data = -1; *FreePtr = 1; 93

94 { } Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -7- int i; for (i=1; I < NumberOfNodes; i++) { Node[i].Next = i+1; Node[i].Data = -1; /* δεν είναι αναγκαίο η απόδοση αρχικής τιμής στο πεδίο των δεδομένων */ } Node[NumberOfNodes].Next = NilValue ; Node[NumberOfNodes].Data = -1; *FreePtr = 1; 94

95 Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -8- void CreateLList(ListPointer *List) /*Λειτουργία: Δημιουργεί μια κενή συνδεδεμένη λίστα. Επιστρέφει: Έναν (μηδενικό) δείκτη που δείχνει σε κενή ΣΛ.*/ { *List = NilValue; } 95

96 Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -9- boolean EmptyLList(ListPointer List); /*Δέχεται: Έναν δείκτη List που δείχνει στο 1 ο στοιχείο της συνδεδεμένης λίστας. Λειτουργία: Ελέγχει αν η συνδεδεμένη λίστα είναι κενή. Επιστρέφει: TRUE αν η συνδεδεμένη λίστα είναι κενή και FALSE διαφορετικά.*/ { return (List == NilValue); } 96

97 boolean FullLList(ListPointer FreePtr) /* Δέχεται: Έναν δείκτη FreePtr που δείχνει σε μια συνδεδεμένη λίστα με διαθέσιμους κόμβους. Λειτουργία: Ελέγχει αν η συνδεδεμένη λίστα είναι γεμάτη. Επιστρέφει: TRUE αν η συνδεδεμένη λίστα είναι γεμάτη και FALSE διαφορετικά.*/ { } Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -10- return (FreePtr == NilValue); 97

98 Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -11- void GetNode(ListPointer *P, ListPointer *FreePtr, NodeType Node[ ]) /*Δέχεται: Τον πίνακα Node με τα στοιχεία της ΣΛ και τους διαθέσιμους κόμβους και τον δείκτη FreePtr. Λειτουργία: Αποκτά τον 1ο "ελεύθερο" κόμβο. Επιστρέφει: Τον δείκτη P πο δείχνει στο διαθέσιμο κόμβο και τον τροποποιημένο δείκτη FreePtr που δεικτοδοτεί στο 1 ο (νέο) διαθέσιμο κόμβο.*/ 98

99 Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -12- { } *P = *FreePtr; if (!FullLList(*FreePtr)) *FreePtr = Node[*FreePtr].Next; 99

100 Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -13- void Insert(ListPointer *List, NodeType Node[ ], ListPointer *FreePtr, ListPointer PredPtr, ListElementType Item); /*Δέχεται: Μια συνδεδεμένη λίστα (δείκτη List προς το 1 ο στοιχείο της ΣΛ, τον πίνακα Node με τα στοιχεία της ΣΛ), τον δείκτη PredPtr και ένα στοιχείο Item. Λειτουργία: Εισάγει στη συνδεδεμένη λίστα, αν δεν είναι γεμάτη, το στοιχείο Item μετά από τον κόμβο στον οποίο δείχνει ο δείκτης PredPtr. Επιστρέφει: Την τροποποιημένη συνδεδεμένη λίστα: δείκτη List προς το 1 ο στοιχείο της ΣΛ, τον τροποποιημένο πίνακα Node και τον δείκτη FreePtr προς το 1 ο διαθέσιμο κόμβο Εξοδος: Μήνυμα γεμάτης λίστας, αν η συνδεδεμένη λίστα είναι γεμάτη.*/ 100

101 Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -14- { ListPointer TempPtr; // η GetNode επιστρέφει τη θέση TempPtr που θα αποθηκευθεί το στοιχείο GetNode(&TempPtr, FreePtr, Node); if (!FullLList(TempPtr)) { if (PredPtr == NilValue) { Node[TempPtr].Data =Item; Node[TempPtr].Next =*List; *List =TempPtr; } 101

102 Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -15- else { Node[TempPtr].Data = Item; Node[TempPtr].Next = Node[PredPtr].Next; Node[PredPtr].Next = TempPtr; } } else printf("full List...\n"); } 102

103 Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -16- void Delete(ListPointer *List, NodeType Node[ ], ListPointer *FreePtr, ListPointer PredPtr); /*Δέχεται: Μια συνδεδεμένη λίστα (δείκτη List προς το 1ο στοιχείο της ΣΛ, τον πίνακα Node με τα στοιχεία της ΣΛ), και τον δείκτη PredPtr που δείχνει στον προηγούμενο κόμβο από αυτόν που θα διαγραφεί. Λειτουργία: Διαγράφει από τη συνδεδεμένη λίστα, αν δεν είναι κενή, τον επόμενο κόμβο από αυτόν στον οποίο δείχνει ο PredPtr. Επιστρέφει: Την τροποποιημένη λίστα και το δείκτη FreePtr προς το 1ο διαθέσιμο κόμβο (θέση του στοιχείου που διαγράφτηκε) Έξοδος: Μήνυμα κενής λίστας, αν η συνδεδεμένη λίστα είναι κενή.*/ 103

104 Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -17- { ListPointer TempPtr ; if (!EmptyLList(*List)) { if (PredPtr == NilValue) { TempPtr =*List; *List = Node[TempPtr].Next; } 104

105 Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -18- else { TempPtr = Node[PredPtr].Next; Node[PredPtr].Next = Node[TempPtr].Next; } ReleaseNode(Node, TempPtr, &(*FreePtr)); } else printf("empty List...\n"); } 105

106 Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -19- void ReleaseNode(NodeType Node[ ], ListPointer P, ListPointer *FreePtr); /*Δέχεται: Τον πίνακα Node, που αναπαριστά τα στοιχεία της ΣΛ και τη δεξαμενή των διαθέσιμων κόμβων, και έναν δείκτη P. Λειτουργία: Επιστρέφει στη δεξαμενή τον κόμβο στον οποίο δείχνει ο P. Επιστρέφει: Τον τροποποιημένο πίνακα Node και τον δείκτη P.*/ 106

107 Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -20- { } Node[P].Next =*FreePtr; *FreePtr = P; Node[P].Data = -1; 107

108 Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -21- void TraverseLinked(ListPointer List, NodeType Node[ ]); /*Δέχεται: Μια συνδεδεμένη λίστα (δείκτη List προς το 1ο στοιχείο της ΣΛ, τον πίνακα Node με τα στοιχεία της ΣΛ). Λειτουργία: Κάνει διάσχιση της συνδεδεμένης λίστας, αν δεν είναι κενή. Έξοδος: Εξαρτάται από την επεξεργασία.*/ 108

109 Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -21- { ListPointer CurrPtr; if (!EmptyLList(List)) { CurrPtr =List; while (CurrPtr!= NilValue) { printf("(%d, %d, %d) ", CurrPtr,Node[CurrPtr].Data, Node[CurrPtr].Next); CurrPtr = Node[CurrPtr].Next; } 109

110 Πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα με πίνακα -22- } printf("\n"); } else printf("empty List...\n"); 110

111 Τέλος Ενότητας

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομημένος Προγραμματισμός

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Δομημένος Προγραμματισμός Ενότητα 5(γ): Εργαστηριακή Άσκηση Αναπλ. Καθηγητής: Κωνσταντίνος Στεργίου Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

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

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

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

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Δομημένος Προγραμματισμός Ενότητα 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,

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

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

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 10: Συναρτήσεις Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

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

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

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

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

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

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

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

Ηλεκτρονικοί Υπολογιστές

Ηλεκτρονικοί Υπολογιστές ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 9: Πίνακες στη C++ Ζαχαρούλα Ανδρεοπούλου Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

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

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

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

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

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

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

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

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

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

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

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

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

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Μεταγλωττιστές Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

Δομές Δεδομένων. Ενότητα 9: Τα ΔΔΑ ως Αναδρομικές Δομές Δεδομένων-Εφαρμογή Δυαδικών Δέντρων: Κωδικοί Huffman. Καθηγήτρια Μαρία Σατρατζέμη

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

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

Περιεχόμενα Ορισμός και λειτουργία των μηχανών Turing Θεωρία Υπολογισμού Ενότητα 20: Μηχανές Turing: Σύνθεση και Υπολογισμοί Επ. Καθ. Π. Κατσαρός Τμήμ

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

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

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Αλφαριθμητικά θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

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

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

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

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

Δομές Δεδομένων Ενότητα 4 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 4: Ουρές Απόστολος Παπαδόπουλος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 3: Ασυμπτωτικός συμβολισμός Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

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

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

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

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

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

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

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr 1 η ΑΣΚΗΣΗ ΣΤΗΝ

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

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

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων Κατ οίκον Εργασία 2 Σκελετοί Λύσεων Άσκηση 1 Ο ζητούμενος ΑΤΔ μπορεί να υλοποιηθεί ως μια ακολουθία από στοιχεία τύπου window συνοδευόμενη από τις πράξεις: MakeNewWindow(L,w) Destroy(L,w) SwitchTo(L,w)

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 4: Δομές Ελέγχου Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

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

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

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

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

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

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

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

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

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

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Εισαγωγή στη C θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

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

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

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

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

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

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

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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Άδειες Χρήσης ΥΠΟΛΟΓΙΣΤΕΣ ΙI Δομή του προγράμματος Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης Το παρόν εκπαιδευτικό υλικό υπόκειται

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

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

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

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

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

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

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

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

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

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

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

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 8: Αρχεία και Δομές Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν

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

3 ο Εργαστήριο Μεταβλητές, Τελεστές

3 ο Εργαστήριο Μεταβλητές, Τελεστές 3 ο Εργαστήριο Μεταβλητές, Τελεστές Μια μεταβλητή έχει ένα όνομα και ουσιαστικά είναι ένας δείκτης σε μια συγκεκριμένη θέση στη μνήμη του υπολογιστή. Στη θέση μνήμης στην οποία δείχνει μια μεταβλητή αποθηκεύονται

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Δομημένος Προγραμματισμός Ενότητα 3(γ): Εργαστηριακή Άσκηση Αναπλ. Καθηγητής: Κωνσταντίνος Στεργίου Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

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

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 8: C++ ΒΙΒΛΙΟΗΚΗ STL, ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Δομές Δεδομένων ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δομές

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

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

Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις Άσκηση 1 Έστω ότι µια βιβλιοθήκη σας παρέχει πρόσβαση σε στοίβες ακεραίων. Η βιβλιοθήκη σας επιτρέπει να ορίσετε µια στοίβα και να καλέσετε τις 5 βασικές

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 6α: Αναζήτηση Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commos. Για εκπαιδευτικό

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

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

Εισαγωγή στον Προγραμματισμό με C++ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Εισαγωγή στον Προγραμματισμό με C++ Ενότητα # 4: Πίνακες Κωνσταντίνος Κουκουλέτσος Τμήμα Αυτοματισμού Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

Τελικός Κύκλος Διαγωνισμάτων Γ ΛΥΚΕΙΟΥ Κυριακή 17 Απριλίου 2016 Μάθημα: Α.Ε.Π.Π. KTIΡΙΟ ΤΜΗΜΑΤΑ ΚΑΛΟΚΑΙΡΙΝΑ ΑΡΓΥΡΟΥΠΟΛΗΣ - ΗΛΙΟΥΠΟΛΗΣ - ΓΛΥΦΑΔΑΣ

Τελικός Κύκλος Διαγωνισμάτων Γ ΛΥΚΕΙΟΥ Κυριακή 17 Απριλίου 2016 Μάθημα: Α.Ε.Π.Π. KTIΡΙΟ ΤΜΗΜΑΤΑ ΚΑΛΟΚΑΙΡΙΝΑ ΑΡΓΥΡΟΥΠΟΛΗΣ - ΗΛΙΟΥΠΟΛΗΣ - ΓΛΥΦΑΔΑΣ Τελικός Κύκλος Διαγωνισμάτων Γ ΛΥΚΕΙΟΥ Κυριακή 17 Απριλίου 2016 Μάθημα: Α.Ε.Π.Π. KTIΡΙΟ ΤΜΗΜΑΤΑ ΚΑΛΟΚΑΙΡΙΝΑ ΑΡΓΥΡΟΥΠΟΛΗΣ - ΗΛΙΟΥΠΟΛΗΣ - ΓΛΥΦΑΔΑΣ Ονοματεπώνυμο Τμήμα Καθηγητής Επιτηρητής Αίθουσα Διάρκεια:

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 6β: Ταξινόμηση με εισαγωγή και επιλογή Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creatve

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

Οι λίστες, χάνοντας τα πλεονεκτήματα των πινάκων, λύνουν προβλήματα που παρουσιάζουν οι πίνακες

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις II Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις II Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Άδειες Χρήσης ΥΠΟΛΟΓΙΣΤΕΣ ΙI Συναρτήσεις II Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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

Δομημένος Προγραμματισμός

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

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

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα 6: Πίνακες Κώστας Κουκουλέτσος, Καθηγητής Τμήμα Η.Υ.Σ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

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

Πληροφορική. Εργαστηριακή Ενότητα 3 η : Επεξεργασία Κελιών Γραμμών & Στηλών. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Πληροφορική. Εργαστηριακή Ενότητα 3 η : Επεξεργασία Κελιών Γραμμών & Στηλών. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Πληροφορική Εργαστηριακή Ενότητα 3 η : Επεξεργασία Κελιών Γραμμών & Στηλών Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

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

Προχωρημένες έννοιες προγραμματισμού σε C

Προχωρημένες έννοιες προγραμματισμού σε C Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr)

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

Εισαγωγή στον δομημένο προγραμματισμό

Εισαγωγή στον δομημένο προγραμματισμό Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Εισαγωγή στον δομημένο προγραμματισμό Ενότητα 12 η : Δυναμική Ανάθεση Θέσης Αν. καθηγητής Στεργίου Κώστας e-mail: kstergiou@uowm.gr Τμήμα Μηχανικών Πληροφορικής

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

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων & Αλγόριθμοι Ουρές Ουρές Περίληψη Η ΟυράΑΔΤ Υλοποίηση με κυκλικό πίνακα Αυξανόμενη Ουρά βασισμένη σε πίνακα Interface ουράς στην C++ Η Ουρά ADT Η ΑΔΤ Ουρά αποθηκεύει αυθαίρετα αντικείμενα Οι εισαγωγές και διαγραφές

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

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

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

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

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων Ι Σύνολο- Περιεχόμενο Μαθήματος

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

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

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

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 0: Λίστες ΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες

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

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

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

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

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

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

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

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι κ. ΠΕΤΑΛΙΔΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 8: Πίνακες Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

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

Υπολογιστικά Συστήματα

Υπολογιστικά Συστήματα Υπολογιστικά Συστήματα Ενότητα 3: Βασικά στοιχεία της γλώσσας προγραμματισμού Visual Basic for Applications (VBA) Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

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

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Δομημένος Προγραμματισμός Ενότητα 2(γ): Εργαστηριακή Άσκηση Αναπλ. Καθηγητής: Κωνσταντίνος Στεργίου Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 9: Στατιστικά Διάταξης- Στατιστικά σε Μέσο Γραμμικό Χρόνο Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε

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

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:03 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων

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

Μαθηματικά. Ενότητα 7: Μη Πεπερασμένα Όρια. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

Μαθηματικά. Ενότητα 7: Μη Πεπερασμένα Όρια. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής Μαθηματικά Ενότητα 7: Μη Πεπερασμένα Όρια Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Python scripts Ένα πρόγραμμα στην Python (συχνά αποκαλείται script) αποτελείται από μία ακολουθία ορισμών και εντολών. H ακολουθία των ορισμών και

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

Πληροφορική. Εργαστηριακή Ενότητα 1 η : Εισαγωγή στα Λογιστικά Φύλλα με το MS Excel. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Πληροφορική. Εργαστηριακή Ενότητα 1 η : Εισαγωγή στα Λογιστικά Φύλλα με το MS Excel. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Πληροφορική Εργαστηριακή Ενότητα 1 η : Εισαγωγή στα Λογιστικά Φύλλα με το MS Excel Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

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