21 lines
1.1 KiB
Markdown
21 lines
1.1 KiB
Markdown
The next data-structure is the hash table.
|
|
The hash table solves the problem of off having some key associated with
|
|
your data and wanting to get the entry in a table.
|
|
|
|
In an normal array you would have to search the whole list. The same is
|
|
true for linked list. A hash table solves this problem by using the key as the index into an array.
|
|
|
|
The key is normally referred to as the hash and is computed by putting your data trough a hash-function.
|
|
|
|
The first problem you can easily imagine is, that two different entries get the same hash. This
|
|
is called a collision. There are different strategies of solving those collisions.
|
|
Some are inline solutions and use the next indices to store the entry others require other data-structures.
|
|
|
|
Our hash-table will use a dlinked-list for these collision. If we detect a collision the new entry is
|
|
saved as the head of the linked list.
|
|
|
|
A downside of a hash table is that it is hard to balance wasted space and avoiding collision.
|
|
You have to have a good hash function and good testing to determine with what kind of space you can
|
|
get away with.
|
|
|
|
You task is to implement the hash table. |