Function to Reverse Linked List in C#

Here is the Code:

class Program
    {
        static void Main(string[] args)
        {
       //   This Solution is written by me and is not completely tested. Please comment if you found any alternative solutions or any enhancement to my solution.
            LinkedList l = new LinkedList();

            l.add(1);
            l.add(2);
            l.add(3);
            l.add(4);
            l.add(5);
            l.add(6);
            l.Display();
            l.reverse();
            l.Display();
        }
    }
    public class LinkedList
    {
        public node head { get; set; }
        public int lenght { get; set; }
        public void add(int data)
        {
            node n = new node(data);
            lenght++;
            if (head == null)
            {
                head = n;
            }
            else
            {
                var temp = head;
                while (temp.next != null)
                {
                    temp = temp.next;
                }
                temp.next = n;
            }
        }
     
        public void Display()
        {
            var temp = head;
            Console.WriteLine("------------");
            while (temp != null)
            {
                Console.WriteLine(temp.data);
                temp = temp.next;
            }
            Console.WriteLine("------------");
        }

        public void reverse()
        {
            var temp = head;
            node n = null;
            node newN;
            while (temp != null)
            {
                newN = new node(temp.data);
                if (n == null)
                {
                    n = newN;
                }
                else
                {
                    newN.next = n;
                    n = newN;
                }
                temp = temp.next;
            }
            head = n;
        }
    }
    public class node
    {
        public int data { get; set; }
        public node next { get; set; }
        public node(int _data)
        {
            data = _data;
        }
    }

Output:
------------
1
2
3
4
5
6
------------
------------
6
5
4
3
2
1
------------
Press any key to continue . . .

No comments:

Post a Comment

Popular Posts