Μάθημα : Προγραμματισμός Υπολογιστών Γ' ετος 2025-2026

Κωδικός : 4540050176

4540050176  -  ΒΑΣΙΛΕΙΟΣ ΜΠΙΤΟΣ

Ενότητες - 8.3 Στοίβα

8.3 Στοίβα

Στοίβα (stack)
Last In First Out - LIFO
Όταν η στοίβα είναι άδεια, είναι προφανές ότι δεν μπορείνα γίνει απώθηση. Άρα, όταν απωθούμε ένα στοιχείο απότη στοίβα, θα πρέπει προηγουμένως να έχουμε εξασφαλίσει ότι η στοίβα δεν είναι κενή. Για αυτό το λόγο, εκτός από την ώθηση και την απώθηση, πρέπει να υλοποιήσουμε και τον έλεγχο, αν η στοίβα είναι κενή.
Οι βασικές λειτουργίες που πρέπει να υποστηρίζει η υλοποίηση μιας στοίβας είναι:
● Δημιουργία μιας κενής στοίβας.      

● Έλεγχος, αν η στοίβα είναι κενή.     

● Ώθηση ενός στοιχείου στη στοίβα.

● Απώθηση ενός στοιχείου από τη στοίβα.

def push(stack, item) :
         stack.append( item )
def pop(stack) :
          return stack.pop( )
def isEmpty(stack) :
         return len(stack) == 0
def createStack( ) :

        return []

Το παρακάτω πρόγραμμα δέχεται από το χρήστη αριθμούς μέχρι να δοθεί το 0 και τους εμφανίζει σε αντίστροφη σειρά από αυτή με την οποία δόθηκαν.
Θέλουμε κάθε φορά να εμφανίσουμε πρώτο τον αριθμό που δόθηκε τελευταίος. Χρειαζόμαστε μια δομή δεδομένων που να υποστηρίζει τη λειτουργία LIFO, όπως η στοίβα (χρησιμοποιούμε βοηθητικά print)

 

def push(stack,i):
      stack.insert(0,i)
def pop(stack):
     return stack.pop(0)
def isempty(stack):
    return len(stack)==0
def createstack():
    return []
s=createstack()
number=int(raw_input('dose aritmo '))
while number!=0:
          push(s,number)
          print s
          number=int(raw_input('dose aritmo '))
print s
while not isempty(s):
           number=pop(s)
           print number
           print s