# How To Reverse a LinkedList

Imagine we have the following data structure for a node in a Linked List.

We start out with a linked list like this

The variable `head`

points at 0.

There are a few constraints when solving this problem

- Your solution should absolutely be
`O(n)`

- Use as few variables as possible - management of the pointers is what makes this problem challenging

Walking through each iteration helped me.

We set `A.next`

to `prev`

, then iterate forward. The variable `B`

really just exists so we can iterate forward once we point `A.next`

elsewhere.

Note that `prev`

now points at the new `head`

.

Hereâ€™s the final solution.

You can get rid of the `if b is not None else None`

section if you rearrange the order in which you set everything (you set `b = a.next`

before you do `a.next = prev`

, but honestly I find that harder to reason about.

This solution has `O(n)`

time complexity and `O(1)`

space complexity.

Wow! You read the whole thing. People who make it this far sometimes
want to receive emails when I post something new.

I also have an RSS feed.