# Top Coding Algorithms — Linked List

## Implementing a lined list in Python

Linked list is a list, but with each element pointing to the next element. So in a linked list, each node contains the current value of the node and a pointer to the next node.

# Node

Like the graph shown above, the first node contains a value 2 and a pointer to the next node with value 4, and so on. So the implementation of a node would be:

# Linked List

With the component of node implemented, let’s implement a linked list.

## Add

So the first and most important function that a linked list need to fulfil is to append a new node to the end of the list.

To append a new node, we need to start from the first node in a linked list, moving to the end of it, and append the new element to the last node.

## Reverse

Probably the most popular skill you need to acquire in an coding interview of linked list. To reverse a lined list, starting from the first element, we need to reverse the pointer one by one.

For each node, we reverse the pointer to assign it to previous node.

## Insert

To insert a value after a certain node, we need to break the current pointer of `node1 -> node2`

and add 2 more pointer `node1 -> new_node`

and `new_node -> node2`

.

## Prepend

To add an element in front of a linked list, we need to assign the new element as head and point it to current head.

Lastly, we implement a utility function to print a linked list.

# Test

Example:

ln = ListNode()

ln.add(3)

ln.add(2)

ln.add(4)ln.print_list()ln.prepend(1)

ln.print_list()ln.reverse()

ln.print_list()

would produce:

`[3, 2, 4]`

[1, 3, 2, 4]

[4, 2, 3, 1]