Linked Lists
Perhaps Linked Lists is one of the simplest data structures that someone could think. They are similar with the treasure hunt game. You can imagine it like in each location there are two kind of information, one is some stored value and one is the direction for the next location. Unfortunately, this could remind some people the process that some offices have to get official documents from the government.
The first Python object that we have to build for implementing this data structure is a node. This will be the location that will contain the next location and the value that we want to store.
class Node(object): def __init__(self, value=None, next_node=None): self.value = value self.next_node = next_node
Now that we have the Node object the Linked List data structure is easy to implement, we just need to remember the first node of the list. We can also add the functionality of adding a new node as the starting node of a given Linked List.
class LinkedList(object): def __init__(self, head=None): self.head = head def add_starting_node(self, new_head): temp = self.head self.head = new_head self.head.next_node = temp
Note that someone could thing of another approach to create a link list. A normal Python list could be used to create Linked Lists, however, this would not be a correct approach as a feature of Linked Lists is that there is no limit on the number of nodes, however, normal lists do have such a limit. Another inconsistency is that in a normal list there is no need to keep track of the location of the next element.
Even if the Linked List data structure is conceptual simple, there are some interesting problems involving Linked Lists. Most of these problems can be solved by keeping track of two locations of the Linked List. Keep this in mind as you try to think about the problems about Linked Lists.