Να δοθούν οι αλγόριθμοι Ώθηση (Push) και Απώθηση (Pop) που αντίστοιχα εκτελούν τις προφανείς λειτουργίες σε μία στοίβα. Να δοθεί ένα παράδειγμα στο οποίο να χρησιμοποιείται μία στοίβα από ακέραιους. Η στοίβα αντιπροσωπεύεται από έναν πίνακα μέχρι 100 θέσεων.

ΛΥΣΗ: Στη συνέχεια δίνονται οι αλγόριθµοι ώθησης (push) και απώθησης (pop) από στοίβα. Χρησιµοποιείται µία λογική
µεταβλητή, η σηµαία done, που δηλώνει την επιτυχή εκτέλεση της διαδικασίας. Επίσης, η µεταβλητή top δηλώνει
την επάνω θέση της στοίβας που είναι κατειληµµένη από κάποιο στοιχείο. Τα δεδοµένα είναι αποθηκευµένα σε
ένα µονοδιάστατο πίνακα, που ονοµάζεται stack και έχει µέγεθος size. Η µεταβλητή item χρησιµεύει για την
αποθήκευση του στοιχείου που εισάγεται ή εξάγεται.

Αλγόριθμος Ωθηση 
Δεδομένα // top, item // 
Αν top<size τότε 
top ← top+1 
stack[top] ← item 
done ← Αληθής 
αλλιώς 
done ← Ψευδής 
Τέλος_αν 
Αποτελέσματα // top, done // 
Τέλος Ωθηση 
 
Αλγόριθμος Απώθηση 
∆εδομένα // top // 
Αν top<=1 τότε
item ← stack[top] 
top ← top-1 
done ← Αληθής 
αλλιώς 
done ← Ψευδής 
Τέλος_αν 
Αποτελέσµατα // item, top, done // 
Τέλος Απώθηση

Στον προηγούµενο αλγόριθµο ελέγχεται η συνθήκη «top<=1» ώστε να διαπιστωθεί αν η στοίβα έχει τουλάχιστον
ένα στοιχείο. Προφανώς, αν δεν έχει τότε επιστρέφεται το µήνυµα Ψευδής.

Share This