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. |