Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ

Σχετικά έγγραφα
ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής

4 ΔYNAMIKEΣ ΔOMEΣ ΔEΔOMENΩN

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:

public class ArrayStack implements Stack {

Συνδεδεμένη Λίστα (Linked List)

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

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ

public class ArrayQueue implements Queue {

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

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

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

Συνδεδεμένη Λίστα ΣΛ null VK 23

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

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

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

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

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

Ευφυείς Τεχνολογίες ----Πράκτορες

Δοµές Δεδοµένων. 7η Διάλεξη Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου

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

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

Από τη UML στον Κώδικα. Μέρος Β

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΔΕΝΤΡΑ (TREES) B C D E F G H I J K L M

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

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

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

Ουρά Προτεραιότητας (priority queue)

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

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

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

Δομές Δεδομένων - Εργαστήριο 2. Λίστες

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ µε JAVA

POINTERS, AGGREGATION, COMPOSITION

Συγκρίσιμα Αντικείμενα (comparable)

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

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

Σι θα δούμε σε αυτό το μάθημα;

Το ισχυρό πλεονέκτηµα των απλών µη ταξινοµηµένων πινάκων που είναι η γρήγορη εισαγωγή, αναιρείται αν απαγορεύονται τα διπλότυπα.

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 2 ΛΥΣΕΙΣ Γραμμικές Δομές Δεδομένων, Ταξινόμηση

Δομές Δεδομένων - Εργαστήριο 5. Ουρές Προτεραιότητας

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

Στοίβες. ΟΑΤ της Στοίβας. Περιγραφή και Υλικό Ανάγνωσης. Αφηρηµένοι Τύποι εδοµένων (AΤ )

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

HY-252 Αντικειμενοστραφής Προγραμματισμός. Χειμερινό Εξάμηνο 2012 Διδάσκων: Χριστοφίδης Βασίλης. Ημερομηνία Παράδοσης: 16/11/2012

Εξαιρέσεις (στη Java)

Διασυνδέσεις / Διεπαφές. Παναγιώτης Σφέτσος, PhD

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

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός

Παύλος Εφραιµίδης. Java. Κληρονοµικότητα

ΗΥ 252 Αντικειμενοστρεφ ής Προγραμματισμός Διδάσκων: Γιάννης Τζίτζικας

Λίστες παράλειψης (skip lists)

Λίστες (Lists) Ορέστης Τελέλης. Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

Εξαιρέσεις στη Java. Περιεχόμενα. Κάποιες προκαθορισμένες ρ εξαιρέσεις. Κωστής Σαγώνας

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

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

Κληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1

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

Αντικειμενοστρεφής Προγραμματισμός

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

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

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

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

ΕΞΑΙΡΕΣΕΙΣ. Εξαιρέσεις προκαλούνται. από το σύστηµα. από το πρόγραµµα

ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

Generics και ArrayLists

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

11β Δομικά πρότυπα σχεδίασης

Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Σύνοψη Προηγούμενου (2/2) Σημερινό Μάθημα. Πίνακες. Εισαγωγή, σε χρόνο O(1).

Αντικειµενοστρεφής Προγραµµατισµός

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

Ανάλυση Πληροφοριακών Συστημάτων. «Βασικές Έννοιες Αντικειμενοστρεφούς Προγραμματισμού Διαγράμματα κλάσεων» Βασίλειος Καρακόιδας

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012

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

Αντικειμενοστρέφεια. Ορισμοί αντικειμενοστρέφειας. Κάποιες γενικές παρατηρήσεις: Περιεχόμενα. Ποιοι είναι οι ορισμοί των παρακάτω;

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, 1908

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ

Εξαιρέσεις στην Java EXCEPTIONS IN JAVA

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα μέσα σε αντικείμενα Αντικείμενα ως επιστρεφόμενες τιμές Αντικείμενα με πίνακες

Χειρισμός Εξαιρέσεων EXCEPTIONS IN JAVA

ΔυαδικάΔΕΝΔΡΑΑναζήτησης

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

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

Κάποιες γενικές παρατηρήσεις:

Εξαιρέσεις (στη Java)

Εξαιρέσεις (στη Java)

Transcript:

Δοµές Δεδοµένων 3ο Εξάµηνο Υλοποίηση Στοίβας και Ουράς µε Συνδεδεµένες Λίστες Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ public class LinkedStack //implements Stack // Υλοποίηση στοίβας µε την τεχνική της σύνθεσης (composition) // H τεχνική αυτή ονοµάζεται και Εξουσιοδότηση (Delegation) private LinkedList S; public LinkedStack( ) S=new LinkedList(); public int size() return S.size(); public boolean isempty() return S.isEmpty(); 1

// public class LinkedStack //implements Stack (συνέχεια) // Υλοποίηση στοίβας µε την τεχνική της σύνθεσης (composition) // H τεχνική αυτή ονοµάζεται και Εξουσιοδότηση (Delegation) public Object top( ) throws StackEmptyException if (S.isEmpty()) throw new StackEmptyException("Empty Stack!"); temp = S.removeFirst(); S.insertFirst(temp); // public class LinkedStack //implements Stack (συνέχεια) // Υλοποίηση στοίβας µε την τεχνική της σύνθεσης (composition) // H τεχνική αυτή ονοµάζεται και Εξουσιοδότηση (Delegation) public void push(object item) S.insertFirst(item); public Object pop( ) throws StackEmptyException try return S.removeFirst(); catch (ListEmptyException str) throw new StackEmptyException("EmptyStack"); 2

import Node; public class LinkedStack2 //implements Stack // Υλοποίηση της στοίβας µε τη χρήση µόνον της κλάσης Node private Node top; private int size; public LinkedStack2( ) top = null; size = 0; public int size( ) return size; public boolean isempty( ) return (top == null); // import Node; // public class LinkedStack2 //implements Stack (συνέχεια) // Υλοποίηση της στοίβας µε τη χρήση µόνον της κλάσης Node public Object top( ) throws StackEmptyException if (isempty( )) throw new StackEmptyException("Empty Stack!"); return top.getitem(); public void push(object item) Node newtop = new Node( ); newtop.setitem(item); newtop.setnext(top); top = newtop; size++; 3

// import Node; // public class LinkedStack2 //implements Stack (συνέχεια) // Υλοποίηση της στοίβας µε τη χρήση µόνον της κλάσης Node public Object pop( ) throws StackEmptyException try Object temp = top.getitem(); top = top.getnext(); size--; catch (NullPointerException str) throw new StackEmptyException("EmptyStack"); public class LinkedStack3 extends LinkedList //implements Stack // Υλοποίηση της στοίβας µε τη µέθοδο της κληρονοµικότητας // από την κλάση LinkedList // Ερώτηση: Τί γίνεται µε τις άλλες µεθόδους της LinkedList? public LinkedStack3( ) super( ); public int size() return super.size(); public boolean isempty() return super.isempty(); 4

// public class LinkedStack3 extends LinkedList //implements Stack (συνέχεια) // Υλοποίηση της στοίβας µε τη µέθοδο της κληρονοµικότητας // από την κλάση LinkedList public Object top( ) throws StackEmptyException if (isempty( )) throw new StackEmptyException("Empty Stack!"); temp = removefirst(); insertfirst(temp); public void push(object item) insertfirst(object); // public class LinkedStack3 extends LinkedList //implements Stack (συνέχεια) // Υλοποίηση της στοίβας µε τη µέθοδο της κληρονοµικότητας // από την κλάση LinkedList public Object pop( ) throws StackEmptyException try return S.removeFirst(); catch (ListEmptyException str) throw new StackEmptyException("EmptyStack"); 5

public class LinkedQueue implements Queue private LinkedList Q; public LinkedQueue( ) Q=new LinkedList(); public int size() return Q.size(); public boolean isempty() return Q.isEmpty(); // public class LinkedQueue implements Queue -συνέχεια public Object front( ) throws QueueEmptyException if (Q.isEmpty()) throw new QueueEmptyException("Empty Queue!"); temp = Q.removeFirst(); Q.insertFirst(temp); public void enqueue(object item) Q.insertLast(item); 6

// public class LinkedQueue implements Queue -συνέχεια public Object front( ) throws QueueEmptyException if (Q.isEmpty()) throw new QueueEmptyException("Empty Queue!"); temp = Q.removeFirst(); Q.insertFirst(temp); public void enqueue(object item) Q.insertLast(item); // public class LinkedQueue implements Queue -συνέχεια public Object dequeue( ) throws QueueEmptyException try return Q.removeFirst(); catch (ListEmptyException str) throw new QueueEmptyException("EmptyQueue"); 7