Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Hashovací tabulky v Lua

Podobné prezentace


Prezentace na téma: "Hashovací tabulky v Lua"— Transkript prezentace:

1 Hashovací tabulky v Lua
Petr Vévoda

2 Hashovací tabulka vyhledávací datová struktura,
vyhledávání pomocí klíčů, spočtených z hashovací funkce, funkce může vracet pro různá data stejný klíč – vznikají kolize.

3 Programovací jazyk Lua
skriptovací jazyk s dynamicky typovanými proměnnými, automatickou správou paměti, … syntaxe inspirovaná Pascalem, napsaná v jazyku C, zdrojový text => bajtkód => interpret.

4 Datové typy Lua má 8 datových typů: nil, boolean, number, string, userdata, function, thread, table. Všechny pokročilejší datové struktury jako pole, seznamy, záznamy jsou reprezentovány pomocí typu table.

5 Datový typ tabulka Ve formě dynamického asociativního pole (klíč => hodnota). Klíč může být jakéhokoliv datového typu (další tabulka, funkce, řetězce), hodnoty tabulky můžou být odlišných typů. Při přístupu na neexistující index vrací tabulka hodnotu nil. Mazání probíhá přiřazením hodnoty nil (proběhne Garbage Collect)

6 local hash_table_mt = {
hash = function(surname) local number = 0 for i in surname:gmatch(".") do number = number + i:byte() * 37 end return number % 19 end, insert = function(self, record) table.insert(self[self.hash(record.surname)],record) search = function(self, surname) index = self.hash(surname) for i in ipairs(self) do if self[index][i].surname == surname then return self[index][i] end return nil delete = function(self, surname) if self[index][i].surname == surname then self[index][i] = nil end hash_table_mt.__index = hash_table_mt HASHTABLE = { new = function(size) local obj = {size = size} for i=1,size do obj[i] = {} setmetatable(obj, hash_table_mt) return obj } --main program record = {name = "petr", surname = "svetr"} ucet = HASHTABLE.new(20) ucet:insert(record) found = ucet:search("svetr") print(found.name, found.surname)

7 Zdroje Lua 5.2 Reference Manual.  [online] URL: http://www.lua.org/manual/5.2/. HUDEC, B. Programovací techniky. 4. vyd. Praha: Vydavatelství ČVUT,  s. ISBN Ierusalimschy, R. Programming in Lua. 3. vyd. Vydavatelství Lua.org, s. ISBN X


Stáhnout ppt "Hashovací tabulky v Lua"

Podobné prezentace


Reklamy Google