using static System.Console; public class Node { public T Value { get; set; } public Node Next { get; set; } } public class LinkedList { private Node head = null; public Node Add(T value) { var node = new Node {Value = value}; if (head == null) head = node; else { var current = head; while (current.Next != null) current = current.Next; current.Next = node; } return node; } public T Remove(Node node) { if (head == null) return node.Value; if (head == node) { head = head.Next; node.Next = null; return node.Value; } var current = head; while (current.Next != null) { if (current.Next == node) { current.Next = node.Next; return node.Value; } current = current.Next; } return node.Value; } public void Print() { var current = head; while (current != null) { WriteLine(current.Value); current = current.Next; } } } public class Program { public static void Main(string[] args) { var ll = new LinkedList(); var node1 = ll.Add(1); var node2 = ll.Add(2); var node3 = ll.Add(3); var node4 = ll.Add(4); var node5 = ll.Add(5); ll.Print(); WriteLine(); ll.Remove(node3); ll.Print(); } } //https://pt.stackoverflow.com/q/164085/101