0875 - Stiva

From Bitnami MediaWiki
Revision as of 11:42, 25 October 2023 by Bonte Lucas Gabriel (talk | contribs) (Pagină nouă: ==Cerința== Să se scrie un program care gestionează o stivă de numere întregi. Inițial stiva este vidă. Programul va citi de la tastatură o listă de operații, care pot fi: *'''push X''' – adaugă valoarea întreagă '''X''' pe stivă; *'''pop''' – elimină elementul din vârful stivei; *'''top''' – afișează elementul din vârful stivei. Programul va realiza asupra stivei operațiile citite, în ordine. Afișările se fac pe ecran, câte o valoare pe linie...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința

Să se scrie un program care gestionează o stivă de numere întregi. Inițial stiva este vidă. Programul va citi de la tastatură o listă de operații, care pot fi:

  • push X – adaugă valoarea întreagă X pe stivă;
  • pop – elimină elementul din vârful stivei;
  • top – afișează elementul din vârful stivei.

Programul va realiza asupra stivei operațiile citite, în ordine. Afișările se fac pe ecran, câte o valoare pe linie.

Date de intrare

Programul citește de la tastatură un număr n, apoi cele n operații,

Date de ieșire

Programul va afișa pe ecran numere rezultat ale operațiilor top, câte unul pe o linie.

Restricții și precizări

  • stiva nu va conține la un moment dat mai mult de 1000 elemente
  • elementele stivei vor fi cuprinse între -1.000.000 și 1.000.000
  • dacă la un moment dat se aplică operația pop și stiva nu conține niciun element, operația nu are efect
  • dacă la un moment dat se aplică operația top și stiva nu conține niciun element, operația nu are efect (nu se afișează nimic)

Exemplu:

Intrare
12
push 5
push 4
top
push 7
push -5
pop
top
pop
top
push 11
top
pop
Ieșire
4
7
4
11

Rezolvare

<syntaxhighlight lang="python" line="1" start="1">

  1. Definim clasa Stack

class Stack:

   def __init__(self):
       self.stack = []  # Initializam stiva ca lista goala
   # Metoda pentru adaugarea unui element in stiva
   def push(self, x):
       self.stack.append(x)  # Adaugam elementul la sfarsitul listei
   # Metoda pentru eliminarea unui element din stiva
   def pop(self):
       if len(self.stack) > 0:  # Verificam daca stiva nu este goala
           self.stack.pop()  # Eliminam ultimul element din lista
   # Metoda pentru afisarea elementului din varful stivei
   def top(self):
       if len(self.stack) > 0:  # Verificam daca stiva nu este goala
           print(self.stack[-1])  # Afisam ultimul element din lista
  1. Citim numarul de operatii

n = int(input())

  1. Cream o instanta a clasei Stack

s = Stack()

  1. Executam operatiile

for _ in range(n):

   operation = input().split()  # Citim operatia
   if operation[0] == 'push':  # Daca operatia este 'push'
       s.push(int(operation[1]))  # Adaugam numarul in stiva
   elif operation[0] == 'pop':  # Daca operatia este 'pop'
       s.pop()  # Eliminam numarul din stiva
   elif operation[0] == 'top':  # Daca operatia este 'top'
       s.top()  # Afisam numarul din varful stivei

</syntaxhighlight>