Στοίβα (Stack)

Ορισμός: Στοίβα ονομάζεται μια δομή δεδομένων, το σύνολο των στοιχείων της οποίας είναι διατεταγμένο με τέτοιο τρόπο, ώστε τα στοιχεία που βρίσκονται στην κορυφή της στοίβας λαμβάνονται πρώτα, ενώ αυτά που βρίσκονται στο βάθος της στοίβας λαμβάνονται τελευταία.

Είναι μια δομή δεδομένων που χρησιμοποιούμε πολλές φορές στην καθημερινή μας ζωή. Έχουμε στοίβα από βιβλία, από πιάτα, από κέρματα κλπ.

Βασικές Λειτουργίες

  • Ώθηση (Push): Η εισαγωγή ενός νέου στοιχείου στη στοίβα. Γίνεται πάντα στην κορυφή.
  • Απώθηση (Pop): Η εξαγωγή ενός στοιχείου από τη στοίβα. Γίνεται πάντα από την κορυφή.

Χρειάζεται μια μεταβλητή (κορυφή – top) που δείχνει τη θέση του στοιχείου της στοίβας που βρίσκεται στην κορυφή της (δηλ. του στοιχείου που ωθήθηκε πιο πρόσφατα και ταυτόχρονα του στοιχείου που πρόκειται να απωθηθεί πρώτο).

Μέθοδος LIFO (Last In First Out): Το τελευταίο μέσα, πρώτο έξω. Δηλαδή, αυτό που τοποθετήθηκε τελευταίο, είναι το πρώτο που θα εξαχθεί προς χρήση.

Data 1 Data 2 TOP

Διαδικασίες (σε Πίνακα Π[10])

  • Ώθηση: Πριν την εισαγωγή, αυξάνουμε την κορυφή κατά 1 (top ← top + 1). Προσέχουμε να υπάρχει διαθέσιμη θέση (αλλιώς έχουμε Υπερχείλιση).
  • Απώθηση: Μετά την εξαγωγή, μειώνουμε την κορυφή κατά 1 (top ← top - 1). Προσέχουμε να υπάρχει τουλάχιστον ένα στοιχείο (αλλιώς έχουμε Υποχείλιση).

Ουρά (Queue)

Ορισμός: Ουρά ονομάζεται μια δομή δεδομένων το σύνολο των στοιχείων της οποίας είναι διατεταγμένο με τέτοιο τρόπο, ώστε τα στοιχεία που τοποθετήθηκαν πρώτα στην ουρά να λαμβάνονται επίσης πρώτα.

Στην καθημερινή μας ζωή παρατηρούμε ουρά από αυτοκίνητα, ουρά από ανθρώπους σε μια τράπεζα κλπ.

Βασικές Λειτουργίες

  • Εισαγωγή (Enqueue): Γίνεται πάντα στο τέλος (πίσω άκρο) της ουράς.
  • Εξαγωγή (Dequeue): Γίνεται πάντα από την αρχή (εμπρός άκρο) της ουράς.

Χρειάζονται δύο μεταβλητές, που δείχνουν την αρχή (front – μπροστά) και το τέλος της ουράς (πίσω – rear).

Μέθοδος FIFO (First In First Out): Το Πρώτο μέσα, Πρώτο έξω. Όποιο στοιχείο εισάγεται πρώτο στην ουρά, εξάγεται (εξυπηρετείται) και πρώτο.

A B FRONT REAR

Διαδικασίες (σε Πίνακα Π[10])

  • Εισαγωγή: Η εισαγωγή στοιχείου γίνεται στο πίσω άκρο (rear ← rear + 1). Αν η ουρά είναι άδεια (front=0), τότε και το front γίνεται 1.
  • Εξαγωγή: Η εξαγωγή στοιχείου γίνεται από το εμπρός άκρο (front ← front + 1). Αν εξαχθεί το τελευταίο στοιχείο (όταν front = rear), τότε η ουρά αδειάζει και οι δείκτες μηδενίζονται (front ← 0, rear ← 0).
Top: 0

ΔΙΑΔΙΚΑΣΙΑ ΩΘΗΣΗ

ΑΝ top < N ΤΟΤΕ
top ← top + 1
Stack[top] ← στοιχείο
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Η στοίβα είναι γεμάτη'
ΓΡΑΨΕ 'Προσοχή: Υπερχείλιση στοίβας!'
ΤΕΛΟΣ_ΑΝ

ΔΙΑΔΙΚΑΣΙΑ ΑΠΩΘΗΣΗ

ΑΝ top > 0 ΤΟΤΕ
ΓΡΑΨΕ Stack[top]
top ← top - 1
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Η στοίβα είναι άδεια'
ΓΡΑΨΕ 'Προσοχή: Υποχείλιση στοίβας!'
ΤΕΛΟΣ_ΑΝ
Front
Rear
Front: 0 | Rear: 0

ΔΙΑΔΙΚΑΣΙΑ ΕΙΣΑΓΩΓΗ

ΑΝ rear = N ΤΟΤΕ
ΓΡΑΨΕ 'Γεμάτη ουρά'
ΑΛΛΙΩΣ_ΑΝ front = 0 ΚΑΙ rear = 0 ΤΟΤΕ
front ← 1
rear ← 1
Queue[rear] ← στοιχείο
ΑΛΛΙΩΣ
rear ← rear + 1
Queue[rear] ← στοιχείο
ΤΕΛΟΣ_ΑΝ

ΔΙΑΔΙΚΑΣΙΑ ΕΞΑΓΩΓΗ

ΑΝ front = 0 ΚΑΙ rear = 0 ΤΟΤΕ
ΓΡΑΨΕ 'Άδεια ουρά'
ΑΛΛΙΩΣ_ΑΝ front = rear ΤΟΤΕ
ΓΡΑΨΕ Queue[front]
front ← 0
rear ← 0
ΑΛΛΙΩΣ
ΓΡΑΨΕ Queue[front]
front ← front + 1
ΤΕΛΟΣ_ΑΝ

Quiz Γνώσεων (Σωστό/Λάθος)

#ΕρώτησηΕπιλογή