Υλοποίηση Λειτουργιών Στοίβας Απλά(1/2)

Σχετικά έγγραφα
IsEmptyList(L): επιστρέφει true αν L = < >, false

Ενότητα 2 Στοίβες Ουρές - Λίστες. ΗΥ240 - Παναγιώτα Φατούρου 1

Στοίβες Ουρές - Λίστες

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 2η: Στοίβες Ουρές - Λίστες Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

Ενότητα 2 Στοίβες Ουρές - Λίστες

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις

Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις

Διάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Τηλ , Fax: , URL:

Τηλ , Fax: , URL:

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

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

Ενότητα 2 Στοίβες Ουρές - Λίστες

Διάλεξη 9: Αφηρημένοι Τύποι Δεδομένων. Διδάσκων: Παναγιώτης Ανδρέου

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

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

Τηλ , Fax: , URL:

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1

Εργαστήριο 4. Εαρινό Εξάμηνο ΠΡΟΣΟΧΗ: Αρχίστε νωρίς το Εργαστήριο 4. Οι ασκήσεις είναι πιο απαιτητικές από τα προηγούμενα εργαστήρια.

Τηλ , Fax: , URL:

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

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

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

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη

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

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

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

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

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

Υλοποίηση Λιστών. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

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

ΕΠΛ232: Εργαστήριο 2

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

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

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C)

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

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

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων

ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

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

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

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΣΤΟΙΒΕΣ (stacks) Σχήµα: Λειτουργία Στοίβας

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

ΑΕΠΠ 6o Επαναληπτικό Διαγώνισμα

Εισαγωγή στον Προγραμματισμό

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

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

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

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

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

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

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

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματιστικό Περιβάλλον

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

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

5ο σετ σημειώσεων - Δείκτες

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

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

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

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

Εργαστήριο 5. Εαρινό Εξάμηνο

Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1

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

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

for for for for( . */

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

Βήματα: μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων. Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα

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

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός...

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

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out)

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out)

Γ7.8 Εγγραφές (Structures) Γ Λυκείου Κατεύθυνσης

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

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

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

Δομημένος Προγραμματισμός (ΤΛ1006)

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

Χρήσεις Στοίβας ΣΤΟΙΒΑ. Ορισμός Στοίβας (stack) Βασική Λειτουργικότητα

Εισαγωγή στον Προγραμματισμό

Σημειώσεις για πρόοδο στο εργαστήριο

Ορισμός μεταβλητών δεικτών και αρχικοποίηση

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

Transcript:

Υλοποίηση Λειτουργιών Στοίβας Απλά(1/2) void MakeEmptyStack(void) Length = 0; for (i=0; i < N; i++) Infos[i] = ; /* initialize */ int IsEmptyStack(void) if (Length == 0) return 1; return 0; info Top(void) if (IsEmptyStack()) then error; (return(infos[length 1])); Χρονική Πολυπλοκότητα MakeEmptyStack(): Θ(N) IsEmptyStack(): Θ(1) Top(): Θ(1) Συνολικός Απαιτούµενος Χώρος Μνήµης Ανεξάρτητα από τον αριθµό στοιχείων: Ν Σελίδα 1 από 8

Υλοποίηση Λειτουργιών Στοίβας Απλά(2/2) info Pop(void) if (Length == 0) return error x = Top(); Length = Length 1; return x; void Push(info x) if (Length == N) then error Length = Length + 1; Infos[Length-1] = x; Χρονική Πολυπλοκότητα Pop(): Θ(1) Push(): Θ(1) Σελίδα 2 από 8

Υλοποίηση Λειτουργιών Στοίβας Πιο δύσκολα με χρήση δεικτών(1/2) pointer MakeEmptyStack(void) pointer S; /* temporary pointer */ S = newcell(stack); /* malloc() */ S->Length = 0; return S; boolean IsEmptyStack(pointer S) /* return (S->Length == 0) */ if (S->Length == 0) return 1; return 0; info Top(pointer S) if (IsEmptyStack(S)) then error; (return(s->infos[s->length 1])); Χρονική Πολυπλοκότητα MakeEmptyStack(): Θ(1) IsEmptyStack(): Θ(1) Top(): Θ(1) Συνολικός Απαιτούµενος Χώρος Μνήµης Ανεξάρτητα από τον αριθµό στοιχείων: Ν Σελίδα 3 από 8

Υλοποίηση Λειτουργιών Στοίβας Πιο δύσκολα με χρήση δεικτών(2/2) info Pop(pointer S) if (S->Length == 0) return error x = Top(S); S->Length = S->Length 1; return x; void Push(info x, pointer S) if (S->Length == N) then error S->Length = S->Length + 1; S->Infos[S->Length-1] = x; Χρονική Πολυπλοκότητα Pop(): Θ(1) Push(): Θ(1) Σελίδα 4 από 8

ΕΡΓΑΣΙΕΣ Εργασία 1 Γράψτε ένα πρόγραμμα που (α)θα διαβάζει μια σειρά χαρακτήρων από την είσοδο, (β)θα τους αποθηκεύει έναν-έναν σε μια στοίβα και (γ)θα τυπώνει ανάποδα τους χαρακτήρες στην οθόνη. Εργασία 2 (από τον Οδηγό εργαστηρίου του κυρίου Ξεζωνάκη) Να γραφεί ένα πρόγραμμα, στο οποίο να χρησιμοποιείτε μια στοίβα θετικών ακεραίων, την οποία να υλοποιήσετε με την χρήση πίνακα ακεραίων Ν θέσεων. Να γράψετε τις συναρτήσεις ώθησης (push) και ανάκλησης (pop) από την στοίβα, στις οποίες να γίνεται έλεγχος πλήρους και κενής στοίβας αντίστοιχα. Το πρόγραμμα να διαβάζει ένα χαρακτήρα από το πληκτρολόγιο, τον ch και: Εάν ο χαρακτήρας είναι το U να διαβάζετε ένα ακέραιο και να γίνεται ώθηση του ακεραίου στην στοίβα. Εάν ο χαρακτήρας είναι το Ο να γίνεται ανάκληση ακεραίου από την στοίβα, ο οποίος να εμφανίζεται στην οθόνη. Εάν ο χαρακτήρας είναι το E, να τελειώνει η όλη διαδικασία και να εμφανίζονται στην οθόνη τα περιεχόμενα της στοίβας. Εάν ο χαρακτήρας δεν είναι κανείς από τους παραπάνω, να γράφεται στην οθόνη «ΛΑΘΟΣ ΧΑΡΑΚΤΗΡΑΣ» και να διαβάζεται νέος χαρακτήρας από το πληκτρολόγιο. Αφού τελειώσει η όλη διαδικασία, να γράφονται στην οθόνη οι ακέραιοι, οι οποίοι εξακολουθούν να υπάρχουν στην στοίβα. Σελίδα 5 από 8

Εργασία 3 (από τον Οδηγό εργαστηρίου του κυρίου Ξεζωνάκη) Να γραφεί ένα πρόγραμμα, στο οποίο να υλοποιήσετε μια ουρά αναμονής θετικών ακεραίων, με την χρήση πίνακα ακεραίων Ν θέσεων. Να γράψετε τις συναρτήσεις ώθησης (qinsert) και ανάκλησης (qremove) από την ουρά, στις οποίες να γίνεται έλεγχος πλήρους και κενής ουράς αντίστοιχα. Το πρόγραμμα να διαβάζει ένα χαρακτήρα από το πληκτρολόγιο, τον ch και: Εάν ο χαρακτήρας είναι το U να διαβάζετε ένα ακέραιο και να γίνεται ώθηση του ακεραίου στην ουρά. Εάν ο χαρακτήρας είναι το Ο να γίνεται ανάκληση ακεραίου από την ουρά, ο οποίος να εμφανίζεται στην οθόνη. Εάν ο χαρακτήρας είναι το E, να τελειώνει η όλη διαδικασία και να εμφανίζονται στην οθόνη τα περιεχόμενα της ουράς. Εάν ο χαρακτήρας δεν είναι κανείς από τους παραπάνω, να γράφεται στην οθόνη «ΛΑΘΟΣ ΧΑΡΑΚΤΗΡΑΣ» και να διαβάζεται νέος χαρακτήρας από το πληκτρολόγιο. Αφού τελειώσει η όλη διαδικασία, να γράφονται στην οθόνη οι ακέραιοι, οι οποίοι εξακολουθούν να υπάρχουν στην ουρά. Σελίδα 6 από 8

Εργασία 4 (από τον Οδηγό εργαστηρίου του κυρίου Ξεζωνάκη) Να γραφεί ένα πρόγραμμα, στο οποίο να υλοποιείτε μια ουρά προτεραιότητας τριών επιπέδων (τριών βαθμών προτεραιότητας), με τη βοήθεια τριών πινάκων. Κάθε εισερχόμενο στοιχείο στην ουρά χαρακτηρίζεται από ένα όνομα και ένα αριθμό από 1 έως 3, ο οποίος δείχνει τον βαθμό προτεραιότητας του στοιχείου. Να χρησιμοποιήσετε μια δομή (structure) για το κάθε στοιχείο. Το πρόγραμμά σας να περιμένει να διαβάσει από το πληκτρολόγιο ένα χαρακτήρα. Εάν ο χαρακτήρας είναι το P να ζητείται το όνομα και ο βαθμός προτεραιότητας του στοιχείου και αυτό να τοποθετείται στην ουρά, στον κατάλληλο πίνακα. Εάν ο χαρακτήρας είναι το R να ανακαλείται το στοιχείο που πρέπει από την ουρά και να εμφανίζεται στην οθόνη. Εάν ο χαρακτήρας είναι το E, να τελειώνει η όλη διαδικασία και να εμφανίζονται στην οθόνη τα περιεχόμενα της ουράς, πρώτα αυτά με τη μεγαλύτερη προτεραιότητα, μετά με τη μεσαία και μετά με την χαμηλή. Σελίδα 7 από 8

Εργασία 5 (από τον Οδηγό εργαστηρίου του κυρίου Ξεζωνάκη) Να γραφεί ένα πρόγραμμα, το οποίο να υλοποιεί την μετατροπή από μεταδιατεταγμένη σε ενδοδιατεταγμένη παράσταση με τη χρήση στοίβας. Να διαβάζετε μια παράσταση με μορφή συμβολοσειράς, η οποία να περιέχει μονοψήφιους αριθμούς και τελεστές + ή ή * ή /. Π.χ., την παράσταση: 5 9 4 + - 7 3 * +. Να υπολογίζεται η ένθετη μορφή (άρα για την παραπάνω παράσταση το αποτέλεσμα, το οποίο είναι 13). Σελίδα 8 από 8