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