verem.py
1    # --------------------------------------------------------------------------
2    #
3    # VEREM - speciális adatszerkezet - "Utolsókból lesznek az elsők"
4    #
5    # Alkalmazásai:
6    # sorozat megfordítása, lengyelforma és kiértékelése,
7    # helyes zárójelezés feldolgozása...
8    #
9    # --------------------------------------------------------------------------
10   
11   v = []  # üres verem (inicializálás)
12   n = 10  # elhelyezhető elemek száma
13   
14   
15   # funkciók: üres-e, tele-e, veremből, verembe, üres
16   
17   def üres_e(v):
18       return len(v) == 0
19   
20   
21   def tele_e(v):
22       return len(v) == n
23   
24   
25   def veremből(v):
26       x = str(v.pop())
27       return x
28   
29   
30   def verembe(v, x):
31       v.append(x)
32   
33   
34   def üres():
35       v.clear()
36   
37   
38   # 1. sorozat megfordítása
39   
40   # Maximum 10 (vagy nulláig) elem beolvasása egy ciklussal
41   # és elhelyezése a verembe,
42   # majd a verem kiolvasása --> fordított sorrendű sorozat!
43   
44   while True:
45       print('Sorozat megfordítása verem segítségével!')
46   
47       # Adatbeolvasás ciklusa - 10-szer vagy '0' értékig
48       i = 1
49       x = ''
50       üres()
51   
52       while not tele_e(v) and x != '0':
53           x = input(str(i) + '. elem: ')
54           if x != '0':
55               verembe(v, x)
56           i += 1
57   
58       # Sorozat megfordítása a verem kiolvasásával:
59       while not üres_e(v):
60           print(veremből(v), end=' ')
61       print()
62   
63       if üres_e(v):
64           print('A verem üres!')
65   
66       # Kilépés vagy ismétlés a "nagy" ciklusban - while True
67       ismét = input('Ismételjük? (i/bármi)')
68       if ismét.lower() != 'i':
69           break