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



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

public class ArrayStack implements Stack {

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

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

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

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

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

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

public class ArrayQueue implements Queue {

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

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

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

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

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

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

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

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

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

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

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

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

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

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

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα

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

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

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

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

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

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

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

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

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

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Γράφηµα (Graph) Εργαστήριο 10. Εισαγωγή

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

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

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

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

Wrapper Classes, Abstract Classes and Interfaces

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

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

Βασικά της γλώσσας JAVA

1 Εισαγωγή στις οµές εδοµένων 2. 2 Στοίβα (Stack) 4. 3 Ουρά (Queue) 7. 4 Λίστα (List) 9. 5 Συνδεδεµένη Λίστα (Linked List) 14

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

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

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

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

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

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

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

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

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

Week 7: Java Collection Classes

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

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

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

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

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Α

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

POINTERS, AGGREGATION, COMPOSITION

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08

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

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

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

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

Κλάσεις και Αντικείµενα

H κλάση ArrayList. Γιώργος Θάνος. Γραφείο Γ. Γκλαβάνη 37. Αντικει ενοστραφής Προγρα. ος όροφος

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning

Week. 6: Java Collections

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies

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

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA

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

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

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

3 Αλληλεπίδραση Αντικειμένων

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008

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

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

Επανάληψη για τις Τελικές εξετάσεις

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

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

Κεφάλαιο V : Εργαστηριακές ασκήσεις που αφορούν δηµιουργία κλάσεων στη Java.

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

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #13

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Η κατασκευή αντικειμένων της κλάσης Student μπορεί να πραγματοποιηθεί είτε στη main είτε σε οποιαδήποτε μέθοδο κλάσης:

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

υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 είκτες

Transcript:

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

ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii

Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών που παρουσιάστηκαν στο ϑεωρητικό µέρος του µαθήµατος. Τα ϑέµατα που καλύπτονται σχετίζονται τόσο µε τις στατικές όσο και µε τις δυναµικές δοµές δεδοµένων. Το εργαστήριο δίνει ιδιαίτερη έµφαση στις τεχνικές της αφαίρεσης δεδοµένων και του προγραµµατισµού που ϐασίζεται σε αντικείµενα. Την περίοδο αυτή ως γλώσσα κωδικοποίησης χρησιµοποιείται η Java. Με την ολοκλήρωση του µαθήµατος οι ϕοιτητές : Θα έχουν αποκτήσει καλή γνώση όλων των ϑεµελιωδών δοµών δεδοµένων και ϑα είναι σε ϑέση να τις χρησιµοποιούν για την υλοποίηση καλοσχεδιασµένων και αποδοτικών προγραµµάτων. Θα έχουν κατανοήσει τις έννοιες των αφηρηµένων τύπων δεδοµένων και των αντικειµένων και το ϱόλο που παίζουν στην ανάπτυξη των προγραµµατιστικών συστηµάτων. Επικοινωνία - Εργαστηριακοί συνεργάτες Στην περίπτωση που ϑέλετε να επικοινωνήσετε µε κάποιον από τους εργαστηριακούς συνεργάτες, µπορείτε να στείλετε e-mail µε τα στοιχεία σας (ονοµατεπώνυµο και τµήµα στο οποίο συµµετέχετε) στις παρακάτω διευθύνσεις : Ζερζελίδης Αλέξανδρος E-mail: alex@it.teithe.gr Μπαλτατζής ηµήτριος E-mail: jimbal@gen.auth.gr Χουβαρδάς Βασίλης E-mail: vchou@csd.auth.gr 1

ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ 2

Εργαστήριο 1 Εισαγωγή στις οµές εδοµένων Ασκηση 1.1 Τα (ιδιωτικά- ηµιουργήστε την Student class, η οποία περιγράφει αφαιρετικά ένα ϕοιτητή. private) στοιχεία που ϑέλουµε να κρατήσουµε είναι : αριθµός µητρώου ϕοιτητή όνοµα επίθετο ηλικία ϕύλο αριθµός απουσιών στο µάθηµα ϐαθµός Στη συνέχεια δηµιουργήστε την Lab class η οποία περιγράφει αφαιρετικά ένα εργαστήριο κάποιου εργαστηριακού µαθήµατος. Η κλάση αυτή πρέπει Α. Να περιέχει τα παρακάτω private στοιχεία : Ονοµα τµήµατος µέγεθος τµήµατος Β. να εκτελεί τα παρακάτω : Εισαγωγή ϕοιτητή στο µάθηµα Αναζήτηση ϕοιτητή µε ϐάση το αριθµό µητρώου ιαγραφή ϕοιτητή από το µάθηµα Εκτύπωση απουσιολογίου για το τµήµα ( αριθµός µητρώου, επώνυµο και όνοµα, αριθµός παρουσιών, ϐαθµός) Να υλοποιήσετε δύο δοµητές. Εναν µε όρισµα µόνο το όνοµα, όπου το τµήµα ϑα έχει προκαθο- ϱισµένο µέγεθος και έναν µε ορίσµατα το όνοµα κει το µέγεθος. ηµιουργήστε µια Testing class για να δοκιµάσετε τη λειτουργία όλων των παραπάνω. Σηµείωση : Η Lab class ϑα περιέχει ένα πίνακα, στον οποίο και ϑα αποθηκεύονται αντικείµενα της Student class. 3

ΕΡΓΑΣΤΗΡΙΟ 1. ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΟΜΕΣ Ε ΟΜΕΝΩΝ Ασκηση 1.2 Υποθέστε τώρα ότι πρέπει να καταχωρήσουµε τους ϕοιτητές που παρακολουθούν το εργαστη- ϱιακό µάθηµα µε τίτλο οµές εδοµένων. ηµιουργήστε την LaboratoryCourse class, η οποία και περιγράφει ένα εργαστηριακό µάθηµα. Η κλάση αυτή περιέχει όλα τα εργαστήρια που πραγµατοποιούνται πχ Τ1,Τ2,Τ3,.., τα οποία ϕυσικά είναι αντικείµενα της Lab class και περιέχουν τους ϕοιτητές που είναι εγγεγραµµένοι στο αντίστοιχο εργαστήριο. Η LaboratoryCourse class πρέπει : Να εκτυπώνει το συνολικό πλήθος των ϕοιτητών που παρακολουθούν το εργαστηριακό µάθηµα. Να εκτυπώνει το πλήθος τον ϕοιτητών που πέτυχαν-απέτυχαν στο µάθηµα ανά εργαστήριο και συνολικά για το εργαστηριακό µάθηµα. Να εκτυπώνει το µέσο όρο του ϐαθµού των ϕοιτητών ανά εργαστήριο και το συνολικό µέσο όρο για το µάθηµα. Να εκτυπώνει τα ποσοστά επιτυχίας και αποτυχίας ανά εργαστήριο και συνολικά για το µάθηµα Ασκηση 1.3 ηµιουργήστε µια Management class που ϑα εµφανίζει ένα κεντρικό µενού από το οποίο ϑα µπορούµε να εκτελέσουµε όλες τις λειτουργίες της LaboratoryCourse class και επιπλέον : Να εισάγουµε κάποιο ϕοιτητή σε ένα τµήµα της αρεσκείας του (εφόσον υπάρχουν διαθέσιµες ϑέσεις). Να διαγράψουµε κάποιο ϕοιτητή δίνοντας ως παράµετρο µόνο τον αριθµό µητρώου. Να αναζητήσουµε ένα ϕοιτητή µε παράµετρο µόνο τον αριθµό µητρώου Επεκτείνετε το πληροφοριακό σας σύστηµα στη συνέχεια ώστε να µπορείτε να διαχειριστείτε 3 εργαστηριακά µαθήµατα του Τµήµατος Πληροφορικής του ΤΕΙ. 4

Εργαστήριο 2 Στοίβα (Stack) Εισαγωγή Στοίβα (stack) είναι µία δοµή δεδοµένων στην οποία νέα στοιχεία µπορούν να προστεθούν και να αφαιρεθούν µόνο από τη µία άκρη της (κορυφή της στοίβας). Συχνά µία στοίβα αναφέρεται και σαν µία δοµή τύπου LIFO (Last-In-First-Out), για να δηλώνεται έτσι ϱητά η ϐασική της ιδιότητα, ότι το στοιχείο που ϑα προστεθεί τελευταίο στη στοιβάδα ϑα αφαιρεθεί πρώτο ή ισοδύναµα το πρώτο στοιχείο που ϑα προστεθεί στη στοιβάδα, αναγκαστικά πρέπει να αφαιρεθεί τελευταίο. Βασικές πράξεις σε στοίβες Οι ϐασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω : Εισαγωγή στοιχείου σε στοίβα - push(p): οθείσης µίας στοίβας S, το στοιχείο P τοποθετείται στην κορυφή της στοίβας S, σαν τελευταίο στοιχείο. Εξαγωγή στοιχείου από στοίβα - pop(): Το στοιχείο P που ϐρίσκεται στην κορυφή της στοίβας S αφαιρείται από αυτήν και επιστρέφεται. Κορυφή της στοίβας - top(): Το στοιχείο P που ϐρίσκεται στην κορυφή της στοίβας S επιστρέ- ϕεται, χωρίς όµως να αφαιρεθεί από αυτήν. Η παρακάτω διασύνδεση (interface) ορίζει τον αφηρηµένο τύπο δεδοµένων (abstract data type) στοίβα : Stack.java public interface Stack extends DataStructure { <p> Adds a new element i n t o the Stack @param Object / public void push ( Object element ) throws StructureFullException ; <p> Removes the top element o f the Stack @return Object / public Object pop ( ) throws StructureEmptyException ; 5

ΕΡΓΑΣΤΗΡΙΟ 2. ΣΤΟΙΒΑ (STACK) <p> Returns the top element o f the Stack @return Object / public Object top ( ) throws StructureEmptyException ; } Ασκηση 2.1 Με ϐάση το Stack interface που περιγράφει τη λειτουργία µιας στοίβας, να κατασκευάσετε την ArrayStack class µε χρήση πίνακα. Ασκηση 2.2 ηµιουργήστε µια στοίβα µε τυχαίους αριθµούς. Εκτελέστε τις ϐασικές λειτουργίες της στοίβας σε µια νέα κλάση TestStack class. Ασκηση 2.3 Να γραφεί πρόγραµµα Java για τον έλεγχο της σωστής χρήσης των παρενθέσεων σε µία αριθµητική παράσταση χρησιµοποιώντας τη δοµή δεδοµένων στοίβα. Το πρόγραµµα να επιστρέφει µήνυµα εάν η αριθµητική παράσταση είναι σωστή ή εάν έχει λάθος, να αναφέρει το σηµείο που ϐρήκε το λάθος. Επεκτείνετε το πρόγραµµα σας ώστε να γίνεται έλεγχος σε {} και σε []. Παραδείγµατα : (1 + 3) 3 (2 + 2) Result: No error 1 + 3) 3 (2 + 2) Result: error at position 4!! Ασκηση 2.4 Σε µια νέα κλάση να κατασκευάσετε µια στοίβα που να περιέχει τα γράµµατα του λατινικού αλφαβήτου, και στη συνέχει να γράψετε τον κώδικα της µεθόδου : public static Stack reversestack(stack source) η οποία δέχεται µια στοίβα source στην είσοδο και επιστρέφει µια νέα στοίβα µε τα στοιχεία της source σε αντίστροφη σειρά. Παράδειγµα εκτέλεσης Αρχική stack = [a b c d e f g h i j k l m n o p q r s t u v w x y z ] Ανεστραµµένη stack = [z y x w v u t s r q p o n m l k j i h g f e d c b a ] 6

ΠΑΡΑΡΤΗΜΑ 7

Data Structure Interface Hierarchy & Documentation Στις επόµενες σελίδες παραθέτουµε την ιεραρχική δοµή των Interfaces που ϑα κατασκευάσουµε. DATA STRUCTURE STACK QUEUE LIST BSTREE GRAPH HEAP DIRECTED GRAPH 9

DataStructure.java public interface DataStructure { <p> Returns the number of elements in this structure. @return i n t / public int size ( ) ; <p> Returns true i f this structure contains no elements. @return boolean / public boolean isempty ( ) ; <p> Returns true i f this structure cannot accept any more elements @return Boolean / public boolean isfull ( ) ; <p> Returns true i f this structure contains the specified element. @return boolean @param Object / public boolean contains ( Object obj ) ; <p> Removes a l l of the elements from this structure @param Object / public void clear ( ) ; <p> Returns true i f the structure i s equal to the otherstructure @return boolean @param DataStructure / public boolean equals ( DataStructure otherstructure ) ; } 10

StructureEmptyException.java public class StructureEmptyException extends RuntimeException { public StructureEmptyException ( String msg ) { super (msg ) ; } } StructureFullException.java public class StructureFullException extends RuntimeException { public StructureFullException ( String msg ) { super (msg ) ; } } 11