ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Εργαστήριο Τεχνολογίας και Επεξεργασίας Δεδομένων Δομές Δεδομένων

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

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

Standard Template Library (STL) C++ library

Άσκηση 3 (ανακοινώθηκε στις 14 Μαΐου 2018, προθεσμία παράδοσης: 8 Ιουνίου 2018, 12 τα μεσάνυχτα).

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

Αφηρημένες Δομές Δεδομένων. Στοίβα (Stack) Υλοποίηση στοίβας

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

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

HY-486 Αρχές Κατανεμημένου Υπολογισμού

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

Εισαγωγή. Interface της εφαρμογής. Κ24: Προγραμματισμός Συστήματος - 1η Εργασία, Εαρινό Εξάμηνο 2019 Προθεσμία Υποβολής: Παρασκευή 15 Μαρτίου, 23:59

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο

1 Το πρόβλημα της συντομότερης διαδρομής

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

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

Δομές Δεδομένων. Λουκάς Γεωργιάδης.

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

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

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

ΘΕΜΑ 1 ο ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Γ ΛΥΚΕΙΟΥ 3 ΩΡΕΣ

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

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

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

Περιεχόμενα. Περιεχόμενα

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

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

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59

Δομές Δεδομένων. Λουκάς Γεωργιάδης.

ΤΕΛΟΣ 1ΗΣ ΑΠΟ 5 ΣΕΛΙ ΕΣ

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

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

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

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

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

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών

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

μεταβλητής Χ Χ ΑΛΗΘΗΣ Χ Χ 7 > 4 Χ ΨΕΥ ΗΣ Μονάδες 10 ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ - ΕΣΠΕΡΙΝΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ231: Δομές Δεδομένων και Αλγόριθμοι. Εαρινό Εξάμηνο Φροντιστήριο 10 ΛΥΣΕΙΣ

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

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

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο

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

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

μεταβλητής Χ Χ ΑΛΗΘΗΣ Χ Χ 7 > 4 Χ ΨΕΥ ΗΣ Μονάδες 10

ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ Φεβρουάριος 2005 Σύνολο μονάδων: 91

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

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

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

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

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

Προγραμματισμός Υπολογιστών με C++

Α1. Στον προγραµµατισµό χρησιµοποιούνται δοµές δεδοµένων. 1. Τι είναι δυναµική δοµή δεδοµένων; Μονάδες 3 2. Τι είναι στατική δοµή δεδοµένων;

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΥΠΗΡΕΣΙΩΝ) 2012 ÈÅÌÅËÉÏ ΕΚΦΩΝΗΣΕΙΣ

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής. Ακαδημαϊκό Έτος

Αντισταθμιστική ανάλυση

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

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

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

ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία

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

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

Προγραμματισμός ΙΙ Εαρινό εξάμηνο Εργασία 3 Βιβλιοθήκη για λειτουργίες σε γράφους

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

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

1. Δεν μπορεί να γίνει κλήση μίας διαδικασίας μέσα από μία συνάρτηση.

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00

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

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

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 1. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Στοίβες και Ουρές. Οικονοµικό Πανεπιστήµιο Αθηνών

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

Για παράδειγμα η αρχική και η τελική κατάσταση αναπαριστώνται ως εξής: (ένα λίτρο)

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗ

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

Εισαγωγή στο περιβάλλον Code::Blocks

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

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

Επιμέλεια: Ομάδα Διαγωνισμάτων από Το στέκι των πληροφορικών

ΠΡΟΓΡΑΜΜΑ Κύριο ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Α, Β, Γ ΑΡΧΗ ΙΑΒΑΣΕ Α, Β, Γ ΚΑΛΕΣΕ ιαδ1(α, Β, Γ) ΓΡΑΨΕ Α, Β, Γ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

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

i 1 Όσο i <> 100 επανάλαβε i i + 2 Γράψε A[i] Τέλος_επανάληψης

ΕΠΛ132 Άσκηση 3 - Αρχές Προγραμματισμού ΙΙ Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

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

Ελαφρύτατες διαδρομές

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΜΟΝΟ ΝΕΟ ΣΥΣΤΗΜΑ ΕΣΠΕΡΙΝΩΝ

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

ΥΣ02 Τεχνητή Νοημοσύνη Χειμερινό Εξάμηνο

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

1. Ουρά α. Απώθηση 2. Στοίβα β. Εξαγωγή γ. Ώθηση δ. Εισαγωγή

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

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

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

an:3 are:6 a:10

Transcript:

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Εργαστήριο Τεχνολογίας και Επεξεργασίας Δεδομένων Δομές Δεδομένων ΠΕΡΙΓΡΑΦΗ ΑΝΤΙΚΕΙΜΕΝΟΥ ΕΡΓΑΣΙΑ 2007-2008 Στη εργασία αυτή καλείστε να υλοποιήσετε σε C++ ένα σύνολο δομών δεδομένων και βασικών αλγορίθμων. Η εργασία λαμβάνει το 40% του συνολικού βαθμού του μαθήματος. Σε περίπτωση που δεν παραδοθεί εργασία αυτομάτως χάνετε 4 μονάδες από τον τελικό βαθμό. Θα πρέπει να υλοποιηθούν οι ακόλουθες δομές δεδομένων: Ι) Στοίβα Η κατασκευή της στοίβας πρέπει να γίνει με δυναμική δέσμευση μνήμης. Θα πρέπει να υποστηριχθούν οι λειτουργίες: κατασκευή άδειας στοίβας, εισαγωγή στην κορυφή (push), διαγραφή από την κορυφή (pop), ανάγνωση της κορυφής, καταστροφή της στοίβας. ΙΙ) Ουρά Προτεραιότητας Η κατασκευή της ουράς πρέπει να γίνει με δυναμική δέσμευση μνήμης. Θα πρέπει να υποστηριχθούν οι λειτουργίες: κατασκευή άδειου σωρού ελαχίστων ή μεγίστων, εισαγωγή, διαγραφή της κορυφής, ανάγνωση της κορυφής, καταστροφή. ΙΙΙ) Δένδρο AVL Η κατασκευή του δένδρου θα πρέπει να γίνει με δυναμική δέσμευση μνήμης. Θα πρέπει να υποστηριχθούν οι λειτουργίες: κατασκευή άδειου δένδρου, εισαγωγή στοιχείου, διαγραφή στοιχείου, αναζήτηση στοιχείου, postorder, inorder, preorder, καταστροφή δένδρου. ΙV) Κατακερματισμός με Αλυσίδες Ο χρήστης δίνει το μέγεθος του πίνακα κατακερματισμού. Θα πρέπει να υποστηριχθούν οι λειτουργίες: κατασκευή άδειου πίνακα κατακερματισμού, εισαγωγή στοιχείου, διαγραφή στοιχείου, αναζήτηση στοιχείου, καταστροφή. V) Κατευθυνόμενος Γράφος με Βάρη Η υλοποίηση του γράφου πρέπει να γίνει με δυναμική δέσμευση μνήμης. Θα πρέπει να υποστηριχθούν οι λειτουργίες: κατασκευή άδειου γράφου, εισαγωγή κορυφής, εισαγωγή ακμής, διαγραφή κορυφής, διαγραφή ακμής, εύρεση ελάχιστων μονοπατιών, εύρεση ελάχιστου δένδρου, διάσχιση DFS, καταστροφή. 1

ΟΔΗΓΙΕΣ ΥΛΟΠΟΙΗΣΗΣ Ακολουθείστε πιστά τις παρακάτω οδηγίες υλοποίησης. Το πρόγραμμά σας θα διαβάζει εντολές από ένα αρχείο με όνομα INPUT.TXT και θα δίνει την έξοδο στο αρχείο OUTPUT.TXT. Οι εντολές που θα περιέχονται στο αρχείο εισόδου είναι οι ακόλουθες: STACK_CREATE stackid; STACK_PUSH stackid, value; STACK_POP stackid; STACK_READ_TOP stackid; STACK_DESTROY stackid; HEAP_CREATE heapid, 0; // σωρός ελαχίστων HEAP_CREATE heapid, 1; // σωρός μεγίστων HEAP_INSERT heapid, value; HEAP_READ_TOP heapid; HEAP_DELETE_TOP heapid; HEAP_DESTROY heapid; AVL_CREATE treeid; AVL_INSERT treeid, value; AVL_DELETE treeid, value; AVL_SEARCH treeid, value; AVL_COMPUTE_POSTORDER treeid; AVL_COMPUTE_PREORDER treeid; AVL_COMPUTE_INORDER treeid; AVL_DESTROY treeid; HASH_CREATE hashid, value; // value είναι το μέγεθος του hash table HASH_INSERT hashid, value; HASH_DELETE hashid, value; HASH_SEARCH hashid, value; HASH_DESTROY hashid; GRAPH_CREATE graphid; GRAPH_INSERT_VERTEX graphid, vertexid; GRAPH_INSERT_EDGE graphid, edgeid, weight, from, to; GRAPH_DELETE_VERTEX graphid, vertexid; GRAPH_DELETE_EDGE graphid, edgeid; GRAPH_COMPUTE_MINSPANTREE graphid; GRAPH_COMPUTE_SHORTEST_PATHS graphid, vertexid; GRAPH_DESTROY graphid; 2

Στις παραπάνω εντολές, stackid, heapid, treeid, hashid και graphid είναι ακέραιοι αριθμοί που δηλώνουν τον κωδικό (όνομα) της κάθε δομής δεδομένων. Επίσης, value είναι ένας ακέραιος αριθμός. Σχετικά με τη δομή του γράφου, vertexid, edgeid είναι κωδικοί κορυφής και ακμής, weight είναι τα βάρος μίας ακμής (ακέραιος) και from, to είναι οι κωδικοί της κορυφής αρχής και τέλους για μία ακμή. Η κάθε εντολή τερματίζεται με το ελληνικό ερωτηματικό ;. Οι εντολές στο αρχείο εισόδου μπορεί να είναι μπερδεμένες. Για παράδειγμα: STACK_CREATE 1; // κατασκευή στοίβας με κωδικό 1 AVL_CREATE 1; // κατασκευή δένδρου AVL με κωδικό 1 STACK_PUSH 1, 10; // εισαγωγή του 10 στη στοίβα AVL_INSERT 1, 100; // εισαγωγή του 100 στο δένδρο AVL AVL_SEARCH 1, 100; // αναζήτηση του 100 στο δένδρο AVL STACK_DESTROY 1; // καταστροφή της στοίβας 1 AVL_DETROY 1; // καταστροφή του δένδρου AVL 1 Η κάθε εντολή θα πρέπει να γράφει κάποιο αποτέλεσμα στο αρχείο εξόδου OUTPUT.TXT. Οι περισσότερες εντολές γράφουν στην έξοδο ένα μήνυμα για επιτυχία ή για αποτυχία. Για παράδειγμα: Είσοδος STACK_PUSH 1, 10; Έξοδος Η εντολή <STACK_PUSH 1, 10> εκτελέστηκε επιτυχώς ή Η εντολή <STACK_PUSH 1, 10> απέτυχε Εξαίρεση αποτελούν οι εντολές αναζήτησης στοιχείων και υπολογισμού, που είναι οι: STACK_READ_TOP 1; Γράφει το στοιχείο που είναι στην κορυφή της στοίβας 1 π.χ. 10 STACK_POP 1; Γράφει το στοιχείο που είναι στην κορυφή της στοίβας 1 π.χ. 10 HEAP_READ_TOP 5; Γράφει το στοιχείο που είναι στην κορυφή της ουράς 5 π.χ. 20 AVL_SEARCH 7, 1; Το στοιχείο 1 δεν υπάρχει στο δένδρο 7 AVL_SEARCH 7, 2; Το στοιχείο 2 βρέθηκε στο δένδρο 7 AVL_COMPUTE_POSTORDER 7; Εδώ θα πρέπει να εμφανιστούν όλα τα στοιχεία του δένδρου σύμφωνα με την postorder 3

AVL_COMPUTE_PREORDER 7; Εδώ θα πρέπει να εμφανιστούν όλα τα στοιχεία του δένδρου σύμφωνα με την preorder AVL_COMPUTE_INORDER 7; Εδώ θα πρέπει να εμφανιστούν όλα τα στοιχεία του δένδρου σύμφωνα με την inorder HASH_SEARCH 12, 5; Το στοιχείο 5 βρέθηκε στον πίνακα κατακερματισμού 12 GRAPH_COMPUTE_MINSPANTREE 6; Εδώ στην έξοδο γράφονται οι ακμές του γράφου 6 που σχηματίζουν το ελάχιστο δένδρο. GRAPH_COMPUTE_SHORTEST_PATHS 6, 1; Εμφανίζεται το κόστος διαδρομής από την κορυφή 1 προς όλες τις κορυφές του γράφου 6 Προσοχή, όταν διαγράφουμε μία κορυφή από το γράφο θα πρέπει να διαγραφούν και όλες οι ακμές που προσπίπτουν σε αυτή. Δεν επιτρέπεται να χρησιμοποιηθεί έτοιμος κώδικας για οποιοδήποτε τμήμα της εργασίας. Θα πρέπει να υλοποιήσετε μόνοι σας τόσο τις δομές δεδομένων όσο και τους αλγορίθμους. Σε περίπτωση που διαπιστωθεί ότι χρησιμοποιήσατε έτοιμο κώδικα η εργασία θα ακυρώνεται. Δεν επιτρέπεται η χρήση της βιβλιοθήκης STL (standard template library). Σε όλες τις περιπτώσεις η κάθε δομή αποθηκεύει ακέραιους αριθμούς (int). Η υλοποίηση των δομών θα πρέπει να ομαδοποιηθεί σε ένα εκτελέσιμο αρχείο με όνομα data_structures.exe. Προσοχή, όλο το πρόγραμμα πρέπει να λειτουργεί σε console mode, χωρίς παράθυρα! Σε αντίθετη περίπτωση η εργασία δε θα βαθμολογηθεί. ΟΔΗΓΙΕΣ ΠΑΡΑΔΟΣΗΣ Τι πρέπει να παραδώσετε Για να θεωρηθεί η εργασία σας ολοκληρωμένη θα πρέπει να παραδώσετε τα ακόλουθα: - Πηγαίος κώδικας του προγράμματος ο οποίος θα περιλαμβάνει όλα τα αρχεία.cpp και.h που κατασκευάσατε για την παραγωγή του προγράμματος data_structures.exe. Ο πηγαίος κώδικας θα πρέπει να είναι σχολιασμένος με σωστό τρόπο. - Το εκτελέσιμο αρχείο data_structures.exe. - Τεχνική έκθεση όπου θα αναλύονται τα θεωρητικά στοιχεία των δομών δεδομένων που έχετε αναπτύξει, χωρίς να γίνεται αναφορά στον κώδικα του προγράμματος. - Τεχνική έκθεση όπου θα αναλύετε τον τρόπο που υλοποιήσατε τον κώδικα του προγράμματος. 4

Προσοχή: απαιτούνται όλα τα παραπάνω αρχεία ώστε να βαθμολογηθεί η εργασία. Πότε και πως πρέπει να παραδώσετε την εργασία Η εργασία θα εκπονηθεί σε ομάδες αυστηρά των δύο ατόμων. Η ημερομηνία παράδοσης της εργασίας είναι η τελευταία μέρα της εξεταστικής του Ιανουαρίου 2008. Όλα τα παραδοτέα θα πρέπει να συμπιεστούν με το WINZIP σε ένα μόνο αρχείο το οποίο θα έχει όνομα AEM1-AEM2.ZIP, όπου ΑΕΜ1 και ΑΕΜ2 είναι οι αριθμοί μητρώου των μελών της ομάδας εργασίας. Το αρχείο αυτό θα πρέπει να το στείλετε στην ηλεκτρονική διεύθυνση apostol@delab.csd.auth.gr μέχρι την προβλεπόμενη ημερομηνία παράδοσης. Τονίζεται ότι δε θα δοθεί νέα εργασία για το Σεπτέμβρη. Αυτό σημαίνει ότι αν δεν παραδώσετε την εργασία μέχρι την προβλεπόμενη ημερομηνία, δε θα μπορέσετε να την παραδώσετε στην εξεταστική του Σεπτεμβρίου. Περισσότερες πληροφορίες και οδηγίες σχετικά με την εργασία θα δοθούν κατά τις επόμενες διαλέξεις. Ο διδάσκων, Απόστολος Ν. Παπαδόπουλος Λέκτορας 5