Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

4. Helyes zárójelezés algoritmusa

Hasonló előadás


Az előadások a következő témára: "4. Helyes zárójelezés algoritmusa"— Előadás másolata:

1 4. Helyes zárójelezés algoritmusa
Kaszab Gábor

2 Az algoritmus célja: Eldönti egy zárójelezésről, hogy helyes-e
Kiírja az összetartozó zárójelpárok sorszámait egymás mellé

3 Helyes zárójelezés A nyitó és csukó zárójelek száma megegyezik
A zárójelezés bármely pontjában nagyobb vagy egyenlő a nyitózárójelek száma, mint a csukó zárójeleké

4 Az algoritmus működése
Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) Egy verem segítségével dolgozik A verem műveletei: Empty(v) : létrehoz egy üres vermet Push(v,i) : beteszi a verembe az i elemet Pop(v,j) : kiveszi a veremből a legfelső elemet

5 Az algoritmus működése
Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) Létrehoz egy üres vermet Az i-ben tároljuk az aktuális zárójel sorszámát, ami kezdéskor 0

6 Az algoritmus működése
Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) Indít egy ciklust, addig, amíg a zárójelezést tartalmazó sorozat ki nem ürül A ciklusmag első lépéseként, kiveszi a sorozat első elemét , és beteszi az x változóba Az i számlálót növeli egyel

7 Az algoritmus működése
Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) Egy elágazással megvizsgálja, hogy milyen zárójelet olvastunk ki a sorozatból Nyitó zárójel esetén beteszi a sorszámát a verembe Csukó zárójelnél pedig kiveszi a verem legfelső elemét és kiírja a képernyőre az i változó aktuális értékével együtt

8 Az algoritmus működése
Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) Ha az algoritmus lefutása után is marad elem a veremben, a zárójelezés helytelen / pl.: ( ( ) / Ha a verem üres és a sorozat következő eleme „)”, a zárójelezés helytelen / pl.: ( ) ) /

9 Példa Kezdeti értékek: -Az s sorozat: ( ( ) ) -A v verem: üres
Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) Kezdeti értékek: -Az s sorozat: ( ( ) ) -A v verem: üres -Az i számláló: 0 Belelép a ciklusba, mert az s nem üres

10 Példa -Az s sorozat: ( ) ) -A v verem: üres -Az x változó: (
Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) -Az s sorozat: ( ) ) -A v verem: üres -Az x változó: ( -Az i változó: 1

11 Példa -Az s sorozat: ( ) ) -A v verem: 1 -Az x változó: (
Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) -Az s sorozat: ( ) ) -A v verem: 1 -Az x változó: ( -Az i változó: 1

12 Példa -Az s sorozat: ) ) -A v verem: 1 -Az x változó: (
Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) -Az s sorozat: ) ) -A v verem: 1 -Az x változó: ( -Az i változó: 2

13 Példa -Az s sorozat: ) ) -A v verem: 1 2 -Az x változó: (
Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) -Az s sorozat: ) ) -A v verem: 1 2 -Az x változó: ( -Az i változó: 2

14 Példa -Az s sorozat: ) -A v verem: 1 2 -Az x változó: )
Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) -Az s sorozat: ) -A v verem: 1 2 -Az x változó: ) -Az i változó: 3

15 Példa -Az s sorozat: ) -A v verem: 1 -Az x változó: ) -Az i változó: 3
Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) -Az s sorozat: ) -A v verem: 1 -Az x változó: ) -Az i változó: 3 Kivette a verem legfelső elemét. Kiírja: 2-3

16 Példa -Az s sorozat: üres -A v verem: 1 -Az x változó: )
Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) -Az s sorozat: üres -A v verem: 1 -Az x változó: ) -Az i változó: 4

17 Példa -Az s sorozat: üres -A v verem: üres -Az x változó: )
Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) -Az s sorozat: üres -A v verem: üres -Az x változó: ) -Az i változó: 4 Kiírja: 1-4 Mivel a sorozat kiürült, kilép a ciklusból és véget ér a algoritmus

18 Vége


Letölteni ppt "4. Helyes zárójelezés algoritmusa"

Hasonló előadás


Google Hirdetések