using System;
using System.Collections.Generic;
public class ProgrammingLanguagesLinkedList
{
public static void Main()
{
Console.WriteLine("Programming Languages LinkedList Demo:");
Console.WriteLine("=====================================");
// Create a new LinkedListNode and display its properties
LinkedListNode<string> centerNode = new LinkedListNode<string>("Java");
Console.WriteLine("After creating the 'Java' node:");
DisplayNodeProperties(centerNode);
// Create a new LinkedList
LinkedList<string> languageList = new LinkedList<string>();
// Add the "Java" node to the list
languageList.AddLast(centerNode);
Console.WriteLine("After adding Java node to the empty LinkedList:");
DisplayNodeProperties(centerNode);
// Add nodes before and after the "Java" node
languageList.AddFirst("Python");
languageList.AddLast("C#");
languageList.AddAfter(centerNode, "JavaScript");
languageList.AddBefore(centerNode, "C++");
Console.WriteLine("After adding Python, C#, JavaScript, and C++:");
DisplayNodeProperties(centerNode);
Console.WriteLine("\nComplete LinkedList traversal (first to last):");
foreach (string language in languageList)
{
Console.WriteLine("Language: " + language);
}
Console.WriteLine("\nLinkedList navigation demonstration:");
Console.WriteLine("First language: " + languageList.First.Value);
Console.WriteLine("Last language: " + languageList.Last.Value);
Console.WriteLine("Second language: " + languageList.First.Next.Value);
Console.WriteLine("Second to last language: " + languageList.Last.Previous.Value);
// Remove a language and show the effect
languageList.Remove("C++");
Console.WriteLine("\nAfter removing C++:");
DisplayNodeProperties(centerNode);
Console.WriteLine("\nFinal LinkedList:");
foreach (string language in languageList)
{
Console.WriteLine("Language: " + language);
}
Console.WriteLine("\nTotal languages in LinkedList: " + languageList.Count);
}
public static void DisplayNodeProperties(LinkedListNode<string> node)
{
if (node.List == null)
Console.WriteLine(" Node is not linked to any list.");
else
Console.WriteLine(" Node belongs to a linked list with {0} elements.", node.List.Count);
if (node.Previous == null)
Console.WriteLine(" Previous node is null.");
else
Console.WriteLine(" Value of previous node: {0}", node.Previous.Value);
Console.WriteLine(" Value of current node: {0}", node.Value);
if (node.Next == null)
Console.WriteLine(" Next node is null.");
else
Console.WriteLine(" Value of next node: {0}", node.Next.Value);
Console.WriteLine();
}
}