A Helyes Zárójelezés Struktogramja Feladat A Helyes Zárójelezés Struktogramja
A Helyes Zárójelezés Az algoritmus egy garantáltan helyes zárójelezés minden összetartozó nyitó- és csukózárójelpárjának a sorszámait egymás mellé kiírja.
Egy példa (( )) ((( ))) ( ) ?? 12 34 567 8910 11 12 ??
A Struktogram HZ(s) Empty(V); I := 0 S!=EOF Read(S,X); I:=I+1 X=“(” Push(V,I) Pop(V,J) Write(J,I)
A példa megoldása Üres verem létrehozása, ‘I’ index 0-ra állítása. V verem: I:=0; (üres)
A példa megoldása (( )) ((( ))) ( ) “1” Az első elem - nyitózárójel. az ‘I’ indexet növeljük 1-el, és a “1” –est betesszük a verembe. (( )) ((( ))) ( ) “1”
A példa megoldása “2” (( )) ((( ))) ( ) “1” A 2. elem is nyitózárójel. Az ‘I’ indexet növeljük 1-el, és a “2” – est betesszük a verembe. “2” (( )) ((( ))) ( ) “1”
A példa megoldása (( )) ((( ))) ( ) “1” Az 3. elem - csukózárójel. az ‘I’ indexet növeljük 1-el, a 2-est kivesszük a veremből. A 2-est és a 3-ast kiírjuk : megvan az első zárójelpár! Output: (2,3), (( )) ((( ))) ( ) “1”
A példa megoldása (( )) ((( ))) ( ) Az 4. elem - csukózárójel. az ‘I’ indexet növeljük 1-el, a 1-est kivesszük a veremből. A 1-est és a 4-est kiírjuk. Megvan az második zárójelpár! Output: (2,3),(1,4), (( )) ((( ))) ( )
A példa megoldása (( )) ((( ))) ( ) “5” Az 5. elem nyitózárójel. Az ‘I’ indexet növeljük 1-el, és az “5” – öst betesszük a verembe. Output: (2,3),(1,4), (( )) ((( ))) ( ) “5”
A példa megoldása “6” (( )) ((( ))) ( ) “5” Az 6. elem nyitózárójel. Az ‘I’ indexet növeljük 1-el, és az “6” – ost betesszük a verembe. Output: (2,3),(1,4), “6” (( )) ((( ))) ( ) “5”
A példa megoldása “7” “6” (( )) ((( ))) ( ) “5” Az 7. elem nyitózárójel. Az ‘I’ indexet növeljük 1-el, és az “7” – est betesszük a verembe. Output: (2,3),(1,4), “7” “6” (( )) ((( ))) ( ) “5”
A példa megoldása “6” (( )) ((( ))) ( ) “5” Az 8. elem - csukózárójel. az ‘I’ indexet növeljük 1-el, a 7-est kivesszük a veremből. A 7-est és a 8-ast kiírjuk. Megvan a harmadik zárójelpár! Output: (2,3),(1,4),(7,8), “6” (( )) ((( ))) ( ) “5”
A példa megoldása (( )) ((( ))) ( ) “5” Az 9. elem - csukózárójel. az ‘I’ indexet növeljük 1-el, a 6-ost kivesszük a veremből. A 6-ost és a 9-est kiírjuk. Megvan a negyedik zárójelpár! Output: (2,3),(1,4),(7,8),(6,9), (( )) ((( ))) ( ) “5”
A példa megoldása (( )) ((( ))) ( ) Az 10. elem - csukózárójel. az ‘I’ indexet növeljük 1-el, a 5-öst kivesszük a veremből. A 5-öst és a 10-est kiírjuk. Megvan az ötödik zárójelpár! Output: (2,3),(1,4),(7,8),(6,9),(5,10), (( )) ((( ))) ( )
A példa megoldása (( )) ((( ))) ( ) “11” Az 11. elem nyitózárójel. Az ‘I’ indexet növeljük 1-el, és a “11” – est betesszük a verembe. Output: (2,3),(1,4),(7,8),(6,9),(5,10), (( )) ((( ))) ( ) “11”
A példa megoldása (( )) ((( ))) ( ) Az utolsó elem - csukózárójel. az ‘I’ indexet növeljük 1-el, a 11-est kivesszük a veremből.A 5-öst és a 10-est kiírjuk. Megvan az utolsó zárójelpár! Output: (2,3),(1,4),(7,8),(6,9),(5,10),(11,12) (( )) ((( ))) ( )
Egy egyszerű nem üres lista aktuális elemének a törlése. 2. Feladat Egy egyszerű nem üres lista aktuális elemének a törlése.
A Lista Az ‘l’ pointer a listánk első elmére mutat, és a lista nem üres : l . . . akt Az akt pointer értéke NIL lesz üres lista esetén, de akkor is, ha „lelépünk” a listáról.
A Törlés Struktogramja Töröl(l) akt = NIL H I B A p := l akt = l l:=l.mut akt:=l dispose(p) p.mut != akt p:=p.mut p.mut := akt.mut dispose(akt) akt := p.mut
Az Aktuális Elem Törlése Ha nem NIL az aktuális pointer, de tegyük fel, hogy a legelső : … l akt Ilyenkor az elem törlése az alábbi módon : …
Az Aktuális (Első) Elem Törlése l := l.mut : akt := l dispose(p) (p:=l volt a stuki elején), azaz: l akt akt l … akt
Az Aktuális (Nem Első) Elem Törlése p.mut != akt : (addig lépünk a pointerrel, míg meg nem találjuk az aktuális elemet). … … l akt akt p.mut := akt.mut …
Az Aktuális (Nem Első) Elem Törlése dispose(akt) : akt := p.mut … akt akt