using System;
public class Node
{
public int Data;
public Node Next;
public Node(int num)
{
Data = num;
Next = null;
}
}
public class LinkedList
{
public Node head;
public void AddNode(int num)
{
Node newNode = new Node(num);
if (head == null)
{
head = newNode;
return;
}
Node current = head;
while (current.Next != null)
{
current = current.Next;
}
current.Next = newNode;
}
public void AddNodeFromFront(int num)
{
Node newNode = new Node(num);
if (head == null)
{
head = newNode;
return;
}
newNode.Next = head;
head = newNode;
}
public int DeleteNode(int num)
{
if(head == null)
{
Console.WriteLine("List is empty");
return -1;
}
if(head.Data == num)
{
int deletedValue = head.Data;
head = head.Next;
return deletedValue;
}
Node current = head;
while(current.Next != null)
{
if(current.Next.Data == num)
{
current.Next = current.Next.Next;
return current.Next.Data;
}
current = current.Next;
}
return -1;
}
public int DeleteFirstNode()
{
if(head == null)
{
return -1;
}
int deletedNode = head.Data;
head = head.Next;
return deletedNode;
}
public int SearchNode(int num)
{
if(head == null)
{
return -1;
}
Node current = head;
while(current != null)
{
if(current.Data == num)
{
Console.WriteLine("Found in list");
return current.Data;
}
current = current.Next;
}
return -1;
}
public int MaxNode()
{
if(head == null)
{
return -1;
}
Node current = head;
int maxValue = head.Data;
while(current != null)
{
if(maxValue < current.Data)
{
maxValue = current.Data;
}
current = current.Next;
}
return maxValue;
}
public int SumOfNodes()
{
if(head == null)
{
return -1;
}
Node current = head;
int sumOfNodes = 0;
while(current != null)
{
sumOfNodes += current.Data;
current = current.Next;
}
return sumOfNodes;
}
public void PrintNode()
{
if (head == null)
{
Console.WriteLine("List is empty");
return;
}
int count = 0;
Node current = head;
while (current != null)
{
Console.WriteLine(current.Data);
current = current.Next;
count++;
}
Console.WriteLine("Total numbers of nodes are: " + count);
}
}
public class HelloWorld
{
public static void Main(string[] args)
{
LinkedList l1 = new LinkedList();
l1.AddNode(10);
l1.AddNode(20);
l1.AddNode(30);
l1.AddNode(40);
l1.AddNode(50);
l1.AddNode(60);
l1.AddNodeFromFront(5);
l1.PrintNode();
int deletedNode = l1.DeleteNode(20);
Console.WriteLine("Deleted Node:" + deletedNode);
l1.PrintNode();
int deletedFirstNode1 = l1.DeleteFirstNode();
Console.WriteLine("Deleted Node:" + deletedFirstNode1);
int deletedFirstNode2 = l1.DeleteFirstNode();
Console.WriteLine("Deleted Node:" + deletedFirstNode2);
int deletedFirstNode3 = l1.DeleteFirstNode();
Console.WriteLine("Deleted Node:" + deletedFirstNode3);
l1.PrintNode();
int nodeToSearch = l1.SearchNode(40);
Console.WriteLine("Found Node:" + nodeToSearch);
l1.PrintNode();
int maxNode = l1.MaxNode();
Console.WriteLine("MAX Node: " + maxNode);
int sumNode = l1.SumOfNodes();
Console.WriteLine("SUM of Node: " + sumNode);
}
}