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