Να δοθούν οι αλγόριθμοι Ώθηση (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» ώστε να διαπιστωθεί αν η στοίβα έχει τουλάχιστον
ένα στοιχείο. Προφανώς, αν δεν έχει τότε επιστρέφεται το µήνυµα Ψευδής.
Πρόσφατα σχόλια