## Get a free weekly practice problem!

Keep that axe sharp.

### You only have free questions left (including this one).

But it doesn't have to end here! Sign up for the 7-day coding interview crash course and you'll get a free Interview Cake problem every week.

Hooray! It's opposite day. Linked lists go the opposite way today.

Write a function for reversing a linked list. Do it in place.

Here's a sample linked list node class:

class LinkedListNode { private $value; private$next = null; public function __construct($value) {$this->value = $value; } public function getNext() { return$this->next; } public function setNext($next) {$this->next = $next; } public function getValue() { return$this->value; } public function setValue($value) {$this->value = \$value; } }

We can do this in space. So don't make a new list; use the existing list nodes!

We can do this is in time.

Careful—even the right approach will fail if done in the wrong order.

Try drawing a picture of a small linked list and running your function by hand. Does it actually work?

The most obvious edge cases are:

1. the list has 0 elements
2. the list has 1 element

Does your function correctly handle those cases?

time and space. We pass over the list only once, and maintain a constant number of variables in memory.

This in-place reversal destroys the input linked list. What if we wanted to keep a copy of the original linked list? Write a function for reversing a linked list out-of-place.