Táblázatok fontosabb műveletei 1 - - Soros táblázat procedure BESZÚR1(TÁBLA, újelem) - - beszúrás soros táblázatba - - a táblázatot egy rekordokat tartalmazó dinamikus vektorral reprezentáljuk - - a rekordok kulcs és érték mezőkből állnak 1. i 1 2. while i méret(tábla) és TÁBLA[i].kulcs újelem.kulcs do 3. i i + 1 4. end while 5. if i méret(tábla) then 6. KIVÉTEL "már van ilyen kulcsú elem" 7. else 8. TÁBLA[i] újelem 9. méret(tábla) méret(tábla) + 1 10. end if procedure TÖRÖL1(TÁBLA, kulcs) - - törlés soros táblázatból - - a táblázatot egy rekordokat tartalmazó dinamikus vektorral reprezentáljuk - - a rekordok kulcs és érték mezőkből állnak 1. i 1 2. while i méret(tábla) és TÁBLA[i].kulcs kulcs do 3. i i + 1 4. end while 5. if i > méret(tábla) then 6. KIVÉTEL "nincs ilyen kulcsú elem" 7. else 8. TÁBLA[i] TÁBLA[méret(TÁBLA)] 9. méret(tábla) méret(tábla) 1 10. end if
Táblázatok fontosabb műveletei 2 procedure BESZÚR1a(TÁBLA, újelem) - - beszúrás soros táblázatba "strázsa" technikával - - a táblázatot egy rekordokat tartalmazó dinamikus vektorral reprezentáljuk - - a rekordok kulcs és érték mezőkből állnak 1. méret(tábla) méret(tábla) + 1 2. TÁBLA[méret(TÁBLA)] újelem 3. i 1 4. while TÁBLA[i].kulcs újelem.kulcs do 5. i i + 1 6. end while 7. if i méret(tábla) then 8. méret(tábla) méret(tábla) 1 9. KIVÉTEL "már van ilyen kulcsú elem" 10. end if procedure TÖRÖL1a(TÁBLA, kulcs) - - törlés soros táblázatból "strázsa" technikával - - a táblázatot egy rekordokat tartalmazó dinamikus vektorral reprezentáljuk - - a rekordok kulcs és érték mezőkből állnak 1. méret(tábla) méret(tábla) + 1 2. TÁBLA[méret(TÁBLA)].kulcs kulcs 3. i 1 4. while TÁBLA[i].kulcs kulcs do 5. i i + 1 6. end while 7. méret(tábla) méret(tábla) 1 8. if i > méret(tábla) then 9. KIVÉTEL "nincs ilyen kulcsú elem" 10. else 11. TÁBLA[i] TÁBLA[méret(TÁBLA)] 12. méret(tábla) méret(tábla) 1 13. end if
Táblázatok fontosabb műveletei 3 - - Önátrendező táblázat procedure ELÉR2(tábla, kulcs) - - adott kulcsú elem elérése önátrendező táblázatban - - a táblázatot egyirányban láncolt listával reprezentáljuk 1. x tábla 2. előző NIL 3. while x NIL és x kulcs kulcs do 4. előző x 5. x x következő 6. end while 7. if x = NIL then 8. KIVÉTEL "nincs ilyen kulcsú elem" 9. else 10. (x érték) feldolgozása 11. if előző NIL then 12. előző következő x következő 13. x következő tábla 14. tábla x 15. end if 16. end if
Táblázatok fontosabb műveletei 4 - - Kulcstranszformációs táblázat "nyílt címzés" szinonimakezelési technikával procedure BESZÚR3(TÁBLA, újelem) - - beszúrás kulcstranszformációs táblázatba "nyílt címzés" szinonimakezelési technikával - - a rekordok kulcs, érték és státusz (foglalt, üres, törölt) mezőkből állnak 1. poz HASH(újelem.kulcs) 2. if TÁBLA[poz].státusz = ÜRES then 3. TÁBLA[poz].státusz FOGLALT 4. TÁBLA[poz].kulcs újelem.kulcs 5. TÁBLA[poz].érték újelem.érték 6. else if TÁBLA[poz].státusz = FOGLALT és TÁBLA[poz].kulcs = újelem.kulcs then 7. KIVÉTEL "már van ilyen kulcsú elem" 8. else 9. i (poz mod méret(tábla)) + 1 10. while i poz és (TÁBLA[i].státusz = TÖRÖLT vagy... TÁBLA[i].státusz = FOGLALT és TÁBLA[i].kulcs újelem.kulcs) do 11. i (i mod méret(tábla)) + 1 12. end while 13. if i poz és TÁBLA[i].státusz = FOGLALT then 14. KIVÉTEL "már van ilyen kulcsú elem" 15. else if TÁBLA[poz].státusz = FOGLALT then 16. i poz mod méret(tábla) + 1 17. while i poz és TÁBLA[i].státusz = FOGLALT do 18. i i mod méret(tábla) + 1 19. end while 20. if i = poz then 21. KIVÉTEL "betelt a táblázat" 22. end if 23. else 24. i poz 25. end if 26. TÁBLA[i].státusz FOGLALT 27. TÁBLA[i].kulcs újelem.kulcs 28. TÁBLA[i].érték újelem.érték 29. end if
Táblázatok fontosabb műveletei 5 procedure TÖRÖL3(TÁBLA, kulcs) - - törlés kulcstranszformációs táblázatból "nyílt címzés" szinonimakezelési technikával - - a rekordok kulcs, érték és státusz (foglalt, üres, törölt) mezőkből állnak 1. poz HASH(kulcs) 2. if TÁBLA[poz].státusz = ÜRES then 3. KIVÉTEL "nincs ilyen kulcsú elem" 4. else if TÁBLA[poz].státusz = FOGLALT és TÁBLA[poz].kulcs = kulcs then 5. TÁBLA[poz].státusz TÖRÖLT 6. else 7. i poz mod méret(tábla) + 1 8. while i poz és (TÁBLA[i].státusz = TÖRÖLT vagy... TÁBLA[i].státusz = FOGLALT és TÁBLA[i].kulcs kulcs) do 9. i i mod méret(tábla) + 1 10. end while 11. if i = poz vagy TÁBLA[i].státusz = ÜRES then 12. KIVÉTEL "nincs ilyen kulcsú elem" 13. else 14. TÁBLA[i].státusz TÖRÖLT 15. end if 16. end if
Táblázatok fontosabb műveletei 6 - - Kulcstranszformációs táblázat "láncolás" szinonimakezelési technikával procedure BESZÚR4(TÁBLA, újelem) - - beszúrás kulcstranszformációs táblázatba "láncolás" szinonimakezelési technikával - - a rekordok kulcs, érték, státusz (foglalt, üres, törölt) és mutató mezőkből állnak 1. poz HASH(újelem.kulcs) 2. if TÁBLA[poz].státusz FOGLALT then 3. TÁBLA[poz].státusz FOGLALT 4. TÁBLA[poz].kulcs újelem.kulcs 5. TÁBLA[poz].érték újelem.érték 6. TÁBLA[poz].mutató 0 7. else if TÁBLA[poz].kulcs = újelem.kulcs then 8. KIVÉTEL "már van ilyen kulcsú elem" 9. else 10. i TÁBLA[poz].mutató 11. előző poz 12. while i 0 és TÁBLA[i].kulcs újelem.kulcs do 13. előző i 14. i TÁBLA[i].mutató 15. end while 16. if i 0 then 17. KIVÉTEL "már van ilyen kulcsú elem" 18. end if 19. i előző mod méret(tábla) + 1 20. while i előző és TÁBLA[i].státusz = FOGLALT do 21. i i mod méret(tábla) + 1 22. end while 23. if i = előző then 24. KIVÉTEL "betelt a táblázat" 25. end if 26. TÁBLA[i].státusz FOGLALT 27. TÁBLA[i].kulcs újelem.kulcs 28. TÁBLA[i].érték újelem.érték 29. TÁBLA[i].mutató 0 30. TÁBLA[előző].mutató i 31. end if
Táblázatok fontosabb műveletei 7 procedure TÖRÖL4(TÁBLA, kulcs) - - törlés kulcstranszformációs táblázatból "láncolás" szinonimakezelési technikával - - a rekordok kulcs, érték, státusz (FOGLALT, ÜRES, TÖRÖLT) és mutató mezőkből állnak 1. poz HASH(kulcs) 2. if TÁBLA[poz].státusz FOGLALT then 3. KIVÉTEL "nincs ilyen kulcsú elem" 4. else if TÁBLA[poz].kulcs = kulcs then 5. if TÁBLA[poz].mutató = 0 then 6. TÁBLA[poz].státusz TÖRÖLT 7. else 8. TÖRÖL_KÖV(TÁBLA, poz) 9. end if 10. else 11. i TÁBLA[poz].mutató 12. előző poz 13. while i 0 és TÁBLA[i].kulcs kulcs do 14. előző i 15. i TÁBLA[i].mutató 16. end while 17. if i = 0 then 18. KIVÉTEL "nincs ilyen kulcsú elem" 19. else if TÁBLA[i].mutató = 0 then 20. TÁBLA[i].státusz TÖRÖLT 21. TÁBLA[előző].mutató 0 22. else 23. TÖRÖL_KÖV(TÁBLA, i) 24. end if 25. end if
Táblázatok fontosabb műveletei 8 procedure TÖRÖL_KÖV(TÁBLA, poz) - - egy adott pozícióban lévő elem törlése láncból 1. köv TÁBLA[poz].mutató 2. i TÁBLA[köv].mutató 3. while i 0 és HASH(TÁBLA[i].kulcs) köv do 4. i TÁBLA[i].mutató 5. end while 6. if i = 0 then 7. TÁBLA[poz] TÁBLA[köv] 8. TÁBLA[köv].státusz TÖRÖLT 9. else 10. elem TÁBLA[i] 11. TÖRÖL(TÁBLA, elem.kulcs) 12. TÁBLA[poz] TÁBLA[köv] 13. TÁBLA[köv].státusz TÖRÖLT 14. BESZÚR(TÁBLA, elem) 15. end if
Táblázatok fontosabb műveletei 9 procedure BESZÚR_4a(TÁBLA, újelem) - - beszúrás kulcstranszformációs táblázatba "láncolás" szinonimakezelési technikával - - Minden lánc csak szinonim elemeket tartalmaz. - - a rekordok kulcs, érték, státusz (FOGLALT, ÜRES, TÖRÖLT) és mutató mezőkből állnak 1. poz HASH(újelem.kulcs) 2. if TÁBLA[poz].státusz = FOGLALT then 3. i első HASH(TÁBLA[poz].kulcs) 4. if poz = első then 5. repeat 6. if TÁBLA[i].kulcs = újelem.kulcs then 7. KIVÉTEL "Már van ilyen kulcsú elem." 8. end if 9. utolsó i 10. i TÁBLA[i].mutató 11. until i = 0 12. else 13. repeat 14. if i = poz then 15. előző utolsó 16. end if 17. utolsó i 18. i TÁBLA[i].mutató 19. until i = 0 20. end if 21. i (utolsó mod méret(tábla)) + 1 22. while i utolsó és TÁBLA[i].státusz = FOGLALT do 23. i (i mod méret(tábla)) + 1 24. end while 25. if i = utolsó then 26. KIVÉTEL "Betelt a táblázat." 27. else if poz = első then 28. TÁBLA[utolsó].mutató poz i 29. else 30. TÁBLA[i] TÁBLA[poz] 31. TÁBLA[előző].mutató i 32. end if 33. end if 34. TÁBLA[poz].kulcs újelem.kulcs 35. TÁBLA[poz].érték újelem.érték 36. TÁBLA[poz].státusz FOGLALT 37. TÁBLA[poz].mutató 0
Táblázatok fontosabb műveletei 10 procedure TÖRÖL_4a(TÁBLA, kulcs) - - törlés kulcstranszformációs táblázatból "láncolás" szinonimakezelési technikával - - Minden lánc csak szinonim elemeket tartalmaz. - - a rekordok kulcs, érték, státusz (FOGLALT, ÜRES, TÖRÖLT) és mutató mezőkből állnak 1. poz HASH(kulcs) 2. if TÁBLA[poz].státusz FOGLALT vagy HASH(TÁBLA[poz].kulcs) poz then 3. KIVÉTEL "nincs ilyen kulcsú elem" 4. end if 5. előző 0 6. while poz 0 és TÁBLA[poz].kulcs kulcs do 7. előző poz 8. poz TÁBLA[poz].mutató 9. end while 10. if poz = 0 then 11. KIVÉTEL "nincs ilyen kulcsú elem" 12. else if előző 0 then 13. TÁBLA[előző].mutató TÁBLA[poz].mutató 14. else if TÁBLA[poz].mutató 0 then 15. előző poz 16. poz TÁBLA[poz].mutató 17. TÁBLA[előző] TÁBLA[poz] 18. end if 19. TÁBLA[pos].státusz TÖRÖLT
Táblázatok fontosabb műveletei 11 - - Kulcstranszformációs táblázat "független túlcsordulási lista" szinonimakezelési technikával procedure BESZÚR5(TÁBLA, újelem) - - beszúrás kulcstranszformációs táblázatba - - "független túlcsordulási lista" szinonimakezelési technikával - - a rekordok kulcs, érték, státusz (FOGLALT, ÜRES, TÖRÖLT) és mutató mezőkből állnak 1. poz HASH(újelem.kulcs) 2. if TÁBLA[poz].státusz FOGLALT then 3. TÁBLA[poz].státusz FOGLALT 4. TÁBLA[poz].kulcs újelem.kulcs 5. TÁBLA[poz].érték újelem.érték 6. TÁBLA[poz].mutató NIL 7. else if TÁBLA[poz].kulcs = újelem.kulcs then 8. KIVÉTEL "már van ilyen kulcsú elem" 9. else if TÁBLA[poz].mutató = NIL then 10. új lefoglal 11. új kulcs újelem.kulcs 12. új érték újelem.érték 13. új következő NIL 14. TÁBLA[poz].mutató új 15. else 16. x TÁBLA[poz].mutató 17. while x NIL és x kulcs újelem.kulcs do 18. előző x 19. x x következő 20. end while 21. if x NIL then 22. KIVÉTEL "már van ilyen kulcsú elem" 23. end if 24. új lefoglal 25. új kulcs újelem.kulcs 26. új érték újelem.érték 27. új következő NIL 28. előző következő új 29. end if
Táblázatok fontosabb műveletei 12 procedure TÖRÖL5(TÁBLA, kulcs) - - törlés kulcstranszformációs táblázatból - - "független túlcsordulási lista" szinonimakezelési technikával - - a rekordok kulcs, érték, státusz (FOGLALT, ÜRES, TÖRÖLT) és mutató mezőkből állnak 1. poz HASH(kulcs) 2. if TÁBLA[poz].státusz FOGLALT then 3. KIVÉTEL "nincs ilyen kulcsú elem" 4. else if TÁBLA[poz].kulcs = kulcs then 5. if TÁBLA[poz].mutató = NIL then 6. TÁBLA[poz].státusz TÖRÖLT 7. else 8. köv TÁBLA[poz].mutató 9. TÁBLA[poz].kulcs köv kulcs 10. TÁBLA[poz].érték köv érték 11. TÁBLA[poz].mutató köv következő 12. end if 13. else 14. x TÁBLA[poz].mutató 15. előző NIL 16. while x NIL és x kulcs kulcs do 17. előző x 18. x x következő 19. end while 20. if x = NIL then 21. KIVÉTEL "nincs ilyen kulcsú elem" 22. else if előző = NIL then 23. TÁBLA[poz].mutató x következő 24. else 25. előző következő x következő 26. end if 27. end if
Táblázatok fontosabb műveletei 13 procedure BESZÚR5a(TÁBLA, újelem) - - beszúrás kulcstranszformációs táblázatba - - "független túlcsordulási lista" szinonimakezelési technikával - - a rekordok kulcs, érték, státusz (FOGLALT, ÜRES, TÖRÖLT) és mutató mezőkből állnak 1. poz HASH(újelem.kulcs) 2. if TÁBLA[poz].státusz FOGLALT then 3. TÁBLA[poz].státusz FOGLALT 4. TÁBLA[poz].kulcs újelem.kulcs 5. TÁBLA[poz].érték újelem.érték 6. TÁBLA[poz].mutató NIL 7. else if TÁBLA[poz].kulcs = újelem.kulcs then 8. KIVÉTEL "már van ilyen kulcsú elem" 9. else 10. x TÁBLA[poz].mutató 11. while x NIL és x kulcs újelem.kulcs do 12. x x következő 13. end while 14. if x NIL then 15. KIVÉTEL "már van ilyen kulcsú elem" 16. end if 17. új lefoglal 18. új kulcs újelem.kulcs 19. új érték újelem.érték 20. új következő TÁBLA[poz].mutató 21. TÁBLA[poz].mutató új 22. end if
Táblázatok fontosabb műveletei 14 procedure TÖRÖL5a(TÁBLA, kulcs) - - törlés kulcstranszformációs táblázatból - - "független túlcsordulási lista" szinonimakezelési technikával - - a rekordok kulcs, érték, státusz (FOGLALT, ÜRES, TÖRÖLT) és mutató mezőkből állnak 1. poz HASH(kulcs) 2. if TÁBLA[poz].státusz FOGLALT then 3. KIVÉTEL "nincs ilyen kulcsú elem" 4. else if TÁBLA[poz].kulcs = kulcs then 5. if TÁBLA[poz].mutató = NIL then 6. TÁBLA[poz].státusz TÖRÖLT 7. else 8. köv TÁBLA[poz].mutató 9. TÁBLA[poz].kulcs köv kulcs 10. TÁBLA[poz].érték köv érték 11. TÁBLA[poz].mutató köv következő 12. end if 13. else 14. TÖRÖL_LÁNCBÓL(TÁBLA[poz].mutató,kulcs) 15. end if procedure TÖRÖL_LÁNCBÓL(fej, kulcs) - - törlés a független túlcsordulási listából 1. if fej = NIL then 2. KIVÉTEL "nincs ilyen kulcsú elem" 3. else if fej kulcs = kulcs then 4. fej fej mutató 5. else 6. TÖRÖL_LÁNCBÓL(fej mutató, kulcs) 7. end if