0876 - Coada
Cerința
Să se scrie un program care gestionează o coadă de numere întregi. Inițial coada este vidă. Programul va citi de la tastatură o listă de operații, care pot fi:
- push X – adaugă valoarea întreagă X în coadă;
- pop – elimină elementul din coadă;
- front – afișează elementul de la începutul cozii.
Programul va realiza asupra cozii 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 numerele rezultat ale operațiilor front, câte unul pe o linie.
Restricții și precizări
- coada nu va conține la un moment dat mai mult de 1000 elemente
- elementele cozii vor fi cuprinse între -1.000.000 și 1.000.000
- dacă la un moment dat se aplică operația pop și coada nu conține niciun element, operația nu are efect
- dacă la un moment dat se aplică operația front și coada nu conține niciun element, operația nu are efect (nu se afișează nimic)
Exemplu:
- Intrare
- 12
- push 5
- push 4
- front
- push 7
- push -5
- pop
- front
- pop
- front
- push 11
- front
- pop
- Ieșire
- 5
- 4
- 7
- 7
Rezolvare
<syntaxhighlight lang="python" line="1" start="1">
- Definim clasa Queue
class Queue:
def __init__(self): self.queue = [] # Initializam coada ca o lista goala
# Metoda pentru adaugarea unui element in coada def push(self, x): self.queue.append(x) # Adaugam elementul la sfarsitul cozii
# Metoda pentru eliminarea unui element din coada def pop(self): if len(self.queue) < 1: # Verificam daca coada este goala return None return self.queue.pop(0) # Eliminam primul element din coada
# Metoda pentru a obtine primul element din coada def front(self): if self.queue: # Verificam daca coada nu este goala return self.queue[0] # Returnam primul element else: return None # Daca coada este goala, returnam None
- Cream o instanta a clasei Queue
queue = Queue()
- Citim numarul de operatii
n = int(input())
- Executam operatiile
for _ in range(n):
operation = input().split() # Citim operatia if operation[0] == 'push': # Daca operatia este 'push', adaugam elementul in coada queue.push(int(operation[1])) elif operation[0] == 'pop': # Daca operatia este 'pop', eliminam elementul din coada queue.pop() elif operation[0] == 'front': # Daca operatia este 'front', afisam primul element din coada front = queue.front() if front is not None: # Daca coada nu este goala, afisam elementul print(front)
</syntaxhighlight>