Implementing hash table using Chaining through Doubly Linked List is similar to implementing Hashtable using Singly Linked List. The only difference is that every node of Linked List has the address of both, the next and the previous node. This will speed up the process of adding and removing elements from the list, hence the time complexity will be reduced drastically.
If we have a Singly linked list:1->2->3->4
If we are at 3 and there is a need to remove it, then 2 need to be linked with 4 and as from 3, 2 can’t be accessed as it is singly linked list. So, the list has to be traversed again i.e O(n), but if we have doubly linked list i.e.1<->2<->3<->4
2 & 4 can be accessed from 3, hence in O(1), 3 can be removed.
Below is the implementation of the above approach:
Value 5 was successfully added at key 4 Element found at key 4: 5 Element was successfully removed at the key 4
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
- C++ Program to implement Symbol Table
- Iterative Preorder Traversal of an N-ary Tree
- Flatten a binary tree into linked list | Set-2
- Iterative Segment Tree (Range Maximum Query with Node Update)
- Print the DFS traversal step-wise (Backtracking also)
- Queries to find maximum product pair in range with updates
- Number of elements greater than K in the range L to R using Fenwick Tree (Offline queries)
- Iterative Segment Tree (Range Minimum Query)
- Count inversions of size k in a given array
- Remove edges connected to a node such that the three given nodes are in different trees