Reverse a link list using Recursion

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;
        }
    }
}

Leave a Reply

Your email address will not be published. Required fields are marked *