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

Σχετικά έγγραφα
ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

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

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

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

Ενότητα 3: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

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

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

Διάλεξη 11: Δέντρα Ι Εισαγωγή σε Δενδρικές Δομές Δεδομένων

Κάθε στοιχείο που γίνεται αντιληπτό με μία από τις πέντε αισθήσεις μας

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

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

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

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΜΗΜΑ: Γ2

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

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

Διάλεξη 11: Δέντρα Ι - Εισαγωγή σε Δενδρικές Δομές Δεδομένων

Βασικές Δοµές Δεδοµένων. Σύντοµη επανάληψη (ΕΠΛ 035).

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

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

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


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

ΣΗΜΕΙΩΣΕΙΣ ΘΕΩΡΙΑΣ ΚΕΦΑΛΑΙΟ 3 ΠΡΟΣΘΗΚΗ

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

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

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


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

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

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

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

6η Διάλεξη Διάσχιση Γράφων και Δέντρων

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

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

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

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

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

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

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

Στην clearlist: - Όλα ok. οριακό PASS

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

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

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

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

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

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

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

Περιεχόμενα. 2 Αριθμητικά συστήματα

Φίλη μαθήτρια, φίλε μαθητή,

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

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

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

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

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

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

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

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

Πληροφορική 2. Δομές δεδομένων και αρχείων

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

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

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

ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 05/03/2012 ΑΠΑΝΤΗΣΕΙΣ. ΘΕΜΑ Α Α1. Α2. 1. ΣΩΣΤΟ 1 στ 2. ΛΑΘΟΣ 2 δ 3. ΣΩΣΤΟ 3 ε 4. ΛΑΘΟΣ 4 β 5. ΣΩΣΤΟ 5 γ

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

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες

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

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

επιφάνεια πυριτίου Αναφορά στο Εκπαιδευτικό Υλικό : 5. Αναφορά στο Εργαστήριο :

Δομές Δεδομένων. Τι είναι η δομή δεδομένων; Έστω η ακολουθία αριθμών: 8, 10,17,19,22,5,12 Λογικό Επίπεδο. Φυσικό Επίπεδο RAM. Ταξινομημένος.

Standard Template Library (STL) C++ library

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ

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

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

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης

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

Βασικές έννοιες προγραμματισμού

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

Τα δεδοµένα συνήθως αποθηκεύονται σε αρχεία στο δίσκο Για να επεξεργαστούµε τα δεδοµένα θα πρέπει αυτά να βρίσκονται στη

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

ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ

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

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

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

Γραφικά υπολογιστών Εργαστήριο 4 Εισαγωγή στις λίστες

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗΝ Α.Ε.Π.Π. Γ ΤΕΧΝΟΛΟΓΙΚΗΣ. Όνομα:.. Βαθμός: /100

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

Θέματα ΑΕΠΠ Πανελλήνιες Εξετάσεις 2006

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

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

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

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

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

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

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

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

8.6 Κλάσεις και αντικείμενα 8.7 Δείκτες σε γλώσσα μηχανής

Transcript:

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

Quiz-[9] Συν (+) και Πλην (-) Έστω n συνεχόμενοι θετικοί ακέραιοι από το 1 μέχρι το n. Σχεδιάστε έναν αλγόριθμο ο οποίος θα τοποθετεί τους αριθμητικούς τελεστές (+) και (-) έτσι ώστε το αλγεβρικό άθροισμα των n θετικών ακεραίων να είναι ίσο με το 0. Στην περίπτωση που δεν μπορεί να επιτευχθεί το αλγεβρικό άθροισμα να είναι ίσο με 0, να εμφανίζει το μήνυμα δεν υπάρχει λύση. 2

Συνδεδεμένες Λίστες (1) Ομοειδή στοιχεία Αποτελούνται από 2 μέρη: Πληροφορία και Δείκτη. Η πληροφορία μπορεί να είναι ατομική ή ομαδική (εγγραφή). Δυναμική δομή Μπορούμε να προσθαφαιρούμε στοιχεία χωρίς πρόβλημα. Γραμμική δομή Υπάρχει «λογική» διάταξη των στοιχείων, δηλαδή κάθε στοιχείο έχει ένα επόμενο (πλην του τελευταίου) και ένα προηγούμενο (πλην του πρώτου). Αποθήκευση στοιχείων σε διάσπαρτες θέσεις Σειριακή προσπέλαση (ξεκινάμε πάντα από την αρχή και μετακινούμαστε μέσω των δεικτών στον επόμενο κόμβο). Διαγραφή στοιχείου με αλλαγή τιμής ενός δείκτη Πράξεις: α) αναζήτηση αριθμού, β) εισαγωγή αριθμού ώστε να γίνει επόμενος κάποιου άλλου, γ) διαγραφή επόμενου, δ) και άλλες πολλές. 3

Συνδεδεμένες Λίστες (2) Δυο ειδών συνδεμένες λίστες : 1) απλά συνδεμένες λίστες (singly linked lists): πράξεις μόνο για επόμενο στοιχείο 2) διπλά συνδεμένες λίστες (double linked lists): πράξεις για επόμενο και προηγούμενο στοιχείο 4

Συνδεδεμένες Λίστες (3) Συνδεδεμένη λίστα με ακεραίους 1 2 5 2 3 6 9 8 first Κάθε κόμβος έχει έναν δείκτη next στον επόμενο κόμβο last Διπλά συνδεδεμένη λίστα με εγγραφές 1 Mary 25 2 John 21 3 Kate 30 4 Bill 44 5 Jack 31 6 Jason 50 first/last Κάθε κόμβος έχει έναν δείκτη next στον επόμενο κόμβο και έναν δείκτη previous στον προηγούμενο κόμβο last/first 5

Απλά Συνδεδεμένες Λίστες (1) Για τον καθορισμό του επόμενου χρησιμοποιούμε διάνυσμα next : Αν L(k) επόμενο του L(i), next(i)= k next(i) = 0 i τελευταίο στοιχείο της λίστας L. first = η θέση του πρώτου στοιχείου i L next first 1 2 3 4 5 6 7... n 5 8 2 3... 0 6 2 4... 6

Απλά Συνδεδεμένες Λίστες (2) Πράξη 1. Αναζήτηση αριθμού x Αλγόριθμος: findsl Δεδομένα: x, L, next, first Αποτελέσματα: found, index 1 2 3 4 5 6 7 8 9 found 0 index first όσο found = 0 και next(index) 0 αν L(index) = x found 1 αλλιώς index next(index) αν next(index) = 0 και L(index) = x found 1 7

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

Απλά Συνδεδεμένες Λίστες (4) Χρησιμοποιούμε τη μεταβλητή free, η οποία δείχνει το δείκτη της πρώτης ελεύθερης θέσης (free = 0 δεν υπάρχουν κενές θέσεις) Σε μια κενή λίστα ισχύουν: first = 0, free = 1, next(i) = i + 1, για i = 1, 2,..., n-1, next(n) =0 9

Απλά Συνδεδεμένες Λίστες (5) Παράδειγμα οργάνωσης κενών θέσεων σε μορφή λίστας first k free i 1 2 3 4 5 6 7 8 L 5 8 2 3 next 8 0 6 2 1 4 0 7 Για εισαγωγή του y μετά το L(k) τίθεται L(free) = y και αλλάζουν τιμές μερικοί δείκτες. 10

Απλά Συνδεδεμένες Λίστες (6) Παράδειγμα: Εισαγωγή y = 9 μετά τον L(4) = 2 ( k = 4 ). first k free i 1 2 3 4 5 6 7 8 L 5 8 2 3 free first next 8 0 6 2 1 4 0 7 i 1 2 3 4 5 6 7 8 L 5 8 2 9 3 next 8 0 6 5 2 4 0 7 11

Απλά Συνδεδεμένες Λίστες (7) Αλγόριθμος: insertsl Δεδομένα: y, k, L, next, first Αποτελέσματα: done, L, next, free 1 2 3 4 5 6 7 8 done 0 αν free 0 done 1 L(free) y a free free next(free) next(a) next(k) next(k) a 12

Απλά Συνδεδεμένες Λίστες (8) Παράδειγμα: Εισαγωγή y = 9 μετά τον L(4) = 2 ( k = 4 ). free first k free i 1 2 3 4 5 6 7 8 L 5 8 2 9 3 next 8 0 6 25 12 4 0 7 4. L(free) y : L(5) 9 5. a free : a 5 6. free next(free) : free next(5) : free 1 7. next(a) next(k) : next(5) next(4) : next(5) 2 8. next(k) a : next(4) 5 13

Απλά Συνδεδεμένες Λίστες (9) Πράξη 3 : Διαγραφή του στοιχείου x της θέσης k. Διακρίνουμε τρεις περιπτώσεις : 1) το διαγραφόμενο στοιχείο είναι πρώτο (k = first), 2) το διαγραφόμενο στοιχείο είναι τελευταίο (next(k) = 0) 3) το διαγραφόμενο στοιχείο είναι ένα ενδιάμεσο στοιχείο Στις περιπτώσεις (2) και (3) χρειαζόμαστε τη θέση prev του προηγούμενου στοιχείου του x = L(k) 14

Απλά Συνδεδεμένες Λίστες (10) (1). Διαγραφή του πρώτου στοιχείου. free first i 1 2 3 4 5 6 7 8 L 5 8 2 9 3 next 8 0 6 5 2 4 0 7 Ποια θα είναι τα νέα free, first, L και next μετά τη διαγραφή? 15

Απλά Συνδεδεμένες Λίστες (11) (1). Διαγραφή του πρώτου στοιχείου. free first i 1 2 3 4 5 6 7 8 L 5 2 9 3 next 8 0 1 5 2 4 0 7 16

Απλά Συνδεδεμένες Λίστες (12) (2). Διαγραφή του τελευταίου στοιχείου. free first prev i 1 2 3 4 5 6 7 8 L 5 8 2 9 3 next 8 0 6 5 2 4 0 7 Ποια θα είναι τα νέα free, first, L και next μετά τη διαγραφή? 17

Απλά Συνδεδεμένες Λίστες (13) (2). Διαγραφή του τελευταίου στοιχείου. free first i 1 2 3 4 5 6 7 8 L 8 2 9 3 next 8 1 6 5 0 4 0 7 18

Απλά Συνδεδεμένες Λίστες (14) (3). Διαγραφή του στοιχείου x=9, k=5. free first prev i 1 2 3 4 5 6 7 8 L 5 8 2 9 3 next 8 0 6 5 2 4 0 7 Ποια θα είναι τα νέα free, first, L και next μετά τη διαγραφή? 19

Απλά Συνδεδεμένες Λίστες (15) (3). Διαγραφή του στοιχείου x=9, k=5. first free i 1 2 3 4 5 6 7 8 L 5 8 2 3 next 8 0 6 2 1 4 0 7 20

Απλά Συνδεδεμένες Λίστες (16) Είδη αλλαγών κατά τη διαγραφή στοιχείου σε απλά συνδεδεμένες λίστες Στην περίπτωση (1) αλλάζουν τιμές οι μεταβλητές first, next(k) και free ενώ Στις περιπτώσεις (2) και (3) αλλάζουν τιμές οι μεταβλητές next(prev), next(k) και free. 21

Απλά Συνδεδεμένες Λίστες (17) Αλγόριθμος: delsl Δεδομένα: prev, k, next, free, first, L Αποτελέσματα: next, first, free, L 1 2 3 4 5 6 7 8 αν k = first % περίπτωση 1) first next(first) next(k) free free k αλλιώς % περιπτώσεις 2) και 3) next(prev) next(k) next(k) free free k 22

Δέντρα (1) Δέντρο: είναι ένα συνεκτικό γράφημα χωρίς κύκλους. Iδιότητες: α) Κάθε δύο κόμβοι συνδέονται με ακριβώς ένα δρόμο. β) Ένα δέντρο έχει τουλάχιστον δύο φύλλα γ) Ένα δέντρο με n κόμβους έχει n-1 τόξα (ακμές) 23

Δέντρα (2) Ορολογία Διαδρομή (path) από ένα κόμβο Ν x σε ένα άλλο κόμβο Ν y είναι μια ακολουθία κόμβων όπου πρώτος είναι ο Ν x, τελευταίος ο Ν y και κάθε άλλος κόμβος είναι παιδί του προηγουμένου. Μήκος (length) μιας διαδρομής είναι ο αριθμός των ακμών που περιλαμβάνονται σ αυτήν. Επίπεδο (level) ή βάθος (depth) ενός κόμβου είναι το μήκος της μοναδικής διαδρομής από τη ρίζα στον κόμβο αυτό. Ύψος (height) ενός δένδρου είναι το μέγιστο βάθος των (τερματικών) κόμβων του. Βαθμός (degree) ενός κόμβου είναι ο αριθμός των παιδιών του. Βαθμός ενός δένδρου είναι ο μέγιστος των βαθμών των κόμβων του. 24

Δέντρα (3) 5 Ένα ριζωμένο δέντρο 1 2 3 4 6 8 7 9 Επίπεδο 0, ρίζα (Βάθος{1}=0) Επίπεδο 1 (Βάθος{2,3,4}=1) Επίπεδο 2 (Βάθος{5,6,7}=2) Επίπεδο 3 (Βάθος{8,9}=3) } (Βάθος{Τ}=3) 25

Δέντρα (4) 1 Ύψος(1)=3-0=3=Βάθος{Τ} 2 3 4 Βάθος{3}=1 5 6 7 }Ύψος(3)= =Βάθος{Τ}-Βάθος{3} = 3-1 = 2 8 9 Βάθος{Τ}=3 Ύψος(9)=3-3=0 26