Reverse a link list

write a program to Reverse a singly link list.

Solution

using System;

namespace LinkedListOpearation
{
    class Program
    {
        static void Main()
        {
            var linkedList = new LinkedList();
            linkedList.Add(new Node(10));
            linkedList.Add(new Node(25));
            linkedList.Add(new Node(90));
            linkedList.Add(new Node(17));


            Console.WriteLine("Linked list:");
            var current = linkedList.Head;
            while (current != null)
            {
                Console.WriteLine(current.Data + " ");
                current = current.Next;
            }


            linkedList.ReverseList();
            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 void Add(Node node)
        {
            if (Head == null)
                Head = node;
            else
            {
                var temp = Head;
                while (temp.Next != null)
                {
                    temp = temp.Next;
                }
                temp.Next = node;
            }
        }

        public void ReverseList()
        {
            Node prev = null;
            Node current = Head;
            Node next;

            while (current != null)
            {
                next = current.Next;
                current.Next = prev;
                prev = current;
                current = next;
            }
            Head = prev;
        }
    }
    public class Node
    {
        public int Data;
        public Node Next;

        public Node(int d)
        {
            Data = d;
            Next = null;
        }
    }
}

Leave a Reply

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