write a program to Reverse a singly link list using Recursion
Solution:
using System;
namespace LinkedListOpearation
{
public class Program
{
public static void Main()
{
var linkedList = new LinkedList
{
Head = new Node(81)
{
Next = new Node(16)
{
Next = new Node(88)
{
Next = new Node(34)
{
Next = new Node(9)
}
}
}
}
};
Console.WriteLine("Original Linked list ");
var current = linkedList.Head;
while (current != null)
{
Console.WriteLine(current.Data);
current = current.Next;
}
linkedList.Reverse(linkedList.Head, null);
Console.WriteLine("Reversed linked list ");
current = linkedList.Head;
while (current != null)
{
Console.WriteLine(current.Data);
current = current.Next;
}
Console.ReadLine();
}
}
public class LinkedList
{
public Node Head;
public Node Reverse(Node currentNode, Node previousNode)
{
if (currentNode.Next == null)
{
Head = currentNode;
currentNode.Next = previousNode;
return Head;
}
var next1 = currentNode.Next;
currentNode.Next = previousNode;
Reverse(next1, currentNode);
return Head;
}
}
public class Node
{
public int Data;
public Node Next;
public Node(int data)
{
Data = data;
Next = null;
}
}
}