C# code please Write a program that creates a link list object of 10 characters, then creates a second list object containing a copy of the first list but in reverse order. Solution using System; class LinkedList { private char data; private LinkedList next; public LinkedList() { data = \'c\'; next = null; } public LinkedList(char value) { data = value; next = null; } public LinkedList Append(char value) { LinkedList node = new LinkedList(value); if(this.next == null) { // Easy to handle node.next = null; // already set in constructor this.next = node; } else { // Insert in the middle LinkedList temp = this.next; node.next = temp; this.next = node; } return node; } public void Display(LinkedList node) { if(node == null) node = this; System.Console.WriteLine(\"\ \ LinkedList:\ \ \"); while(node != null) { System.Console.Write(node.data+\" -> \"); node = node.next; } System.Console.Write(\"\ \"); } public LinkedList Reverse_with_copy(LinkedList head) { LinkedList p = head; LinkedList newhead = null; while(true) { if(p == null) return newhead; LinkedList newnode = new LinkedList(p.data); newnode.next = newhead; newhead = newnode; p = p.next; } } } class Program { static void Main(string[] args) { LinkedList head = new LinkedList(\'a\'); LinkedList p = head.Append(\'c\'); p = p.Append(\'e\'); p = p.Append(\'h\'); p = p.Append(\'b\'); p = p.Append(\'d\'); p = p.Append(\'f\'); p = p.Append(\'g\'); head.Display(null); LinkedList newhead = head.Reverse_with_copy(head); newhead.Display(null); } } /* sample output */.