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

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

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

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

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

public class ArrayStack implements Stack {

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

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

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

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

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

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

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

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

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

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

public class ArrayQueue implements Queue {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

POINTERS, AGGREGATION, COMPOSITION

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων & Αλγόριθμοι. Στοίβες. Εργαστήριο Γνώσης & Ευφυούς Πληροφορικής 1

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

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

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

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

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

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

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

Κεφάλαιο 6 Ουρές Προτεραιότητας

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

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

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

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

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

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

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

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

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

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

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

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

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

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

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο

υαδικό έντρο Αναζήτησης (BSTree)

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

Wrapper Classes, Abstract Classes and Interfaces

Transcript:

Δοµές Δεδοµένων & Ανάλυση Αλγορίθµων 3ο Εξάµηνο Υλοποίηση Στοίβας και Ουράς µε Συνδεδεµένες Λίστες http://aetos.it.teithe.gr/~demos/teaching_gr.html Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ Στοίβα (Stack) Στοίβα (stack) είναι µία λίστα στην οποία νέα στοιχεία µπορούν να προστεθούν και να αφαιρεθούν µόνο από τη µία άκρη της (κορυφή της στοίβας). Μία στοίβα αναφέρεται και σαν µία λίστα τύπου LIFO (Last-In-First-Out) Η Στοίβα σαν Αφηρηµένος Τύπος Δεδοµένων στη Java: public interface Stack public int size( ); // επιστρέφει το µέγεθος της στοίβας public boolean isempty( ); // αληθεύει εάν η στοίβα είναι κενή public Object top( ) throws StackEmptyException; // επιστρέφει το στοιχείο που βρίσκεται στην κορυφή της στοίβας public void push(object item) throws StackFullException; // εισάγει ένα νέο στοιχείο στην κορυφή της στοίβας public Object pop( ) throws StackEmptyException; // εξάγει και επιστρέφει το στοιχείο που βρίσκεται στην κορυφή της στοίβας 1

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(); // public class LinkedStack //implements Stack (συνέχεια) // Υλοποίηση στοίβας µε την τεχνική της σύνθεσης (composition) // H τεχνική αυτή ονοµάζεται και Εξουσιοδότηση (Delegation) public Object top( ) throws StackEmptyException Object temp; if (S.isEmpty()) throw new StackEmptyException("Empty Stack!"); temp = S.removeFirst(); S.insertFirst(temp); 2

// public class LinkedStack //implements Stack (συνέχεια) // Υλοποίηση στοίβας µε την τεχνική της σύνθεσης (composition) // H τεχνική αυτή ονοµάζεται και Εξουσιοδότηση (Delegation) public void push(object item) throws StackFullException S.insertFirst(item); public Object pop( ) throws StackEmptyException try return S.removeFirst(); catch (ListEmptyException str) throw new StackEmptyException("EmptyStack"); 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); 3

// 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) throws StackFullException Node newtop = new Node( ); newtop.setitem(item); newtop.setnext(top); top = newtop; size++; // 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"); 4

public class LinkedStack3 extends LinkedList //implements Stack // Υλοποίηση της στοίβας µε τη µέθοδο της κληρονοµικότητας // από την κλάση LinkedList // Ερώτηση: Τί γίνεται µε τις άλλες µεθόδους της LinkedList? public LinkedStack3( ) super( ); public int size() return super.size(); public boolean isempty() return super.isempty(); // public class LinkedStack3 extends LinkedList //implements Stack (συνέχεια) // Υλοποίηση της στοίβας µε τη µέθοδο της κληρονοµικότητας // από την κλάση LinkedList public Object top( ) throws StackEmptyException if (isempty( )) throw new StackEmptyException("Empty Stack!"); Object temp; temp = removefirst(); insertfirst(temp); public void push(object item) throws StackFullException insertfirst(object); 5

// public class LinkedStack3 extends LinkedList //implements Stack (συνέχεια) // Υλοποίηση της στοίβας µε τη µέθοδο της κληρονοµικότητας // από την κλάση LinkedList public Object pop( ) throws StackEmptyException try return S.removeFirst(); catch (ListEmptyException str) throw new StackEmptyException("EmptyStack"); public class LinkedQueue implements Queue // Υλοποίηση ουράς µε την τεχνική της σύνθεσης (composition) private LinkedList Q; public LinkedQueue( ) Q=new LinkedList(); public int size() return Q.size(); public boolean isempty() return Q.isEmpty(); 6

// public class LinkedQueue implements Queue -συνέχεια // Υλοποίηση ουράς µε την τεχνική της σύνθεσης (composition) public Object front( ) throws QueueEmptyException Object temp; if (Q.isEmpty()) throw new QueueEmptyException("Empty Queue!"); temp = Q.removeFirst(); Q.insertFirst(temp); public void enqueue(object item) throws QueueFullException Q.insertLast(item); // public class LinkedQueue implements Queue -συνέχεια // Υλοποίηση ουράς µε την τεχνική της σύνθεσης (composition) public Object dequeue( ) throws QueueEmptyException try return Q.removeFirst(); catch (ListEmptyException str) throw new QueueEmptyException("EmptyQueue"); 7