Last Updated: 4 Dec, 2020

Easy

## Problem statement

#### Example:

``````Input:
2 4 5 -1

Output:
5 4 2 -1

Explanation: 2->4->5 is the initial linked list. If we reverse this, we get 5->4->2.
``````
##### Input Format :
``````The first line contains the elements of the singly linked list separated by a single space and terminated by -1. Hence, -1 would never be a list element.
``````
##### Output Format :
``````Print the reversed linked list. The elements of the reversed list should be single-space separated, terminated by -1.
``````
##### Note :
``````You do not need to print anything, just return the head of the reversed linked list.
``````

## Approaches

### 01 Approach

One way is to use recursion to reverse the list. Divide the linked list in two halves, the first node and the rest of the list. Reverse the second half using recursion and append the first half, that is the first node at the end of the reversed linked list. Return the head of the reversed linked list.

#### Algorithm

• If the list contains only one node, return the head of the list.
• Else, divide the list into two parts, first node and the rest of the linked list.
• Call the reverse for the rest of the linked list.
• Append the first node at the end of the reversed linked list, the linked list obtained in step 2.
• Return the head of the reversed linked list, obtained in step 4.