public static void Main()
var node4 = new ListNode(100000, null);
var node3 = new ListNode(3, node4);
var node2 = new ListNode(3, node3);
var node1 = new ListNode(3, node2);
var node0 = new ListNode(-8, node1);
p.DeleteDuplicates(node0);
public ListNode DeleteDuplicates(ListNode head) {
ListNode currentNode = head;
while (currentNode.next is {}) {
if (currentNode.val == currentNode.next.val) {
DeleteNode(currentNode, currentNode.next);
currentNode = currentNode.next;
public bool DeleteNode(ListNode prevNode, ListNode nodeToDelete) {
prevNode.next = nodeToDelete.next;
public ListNode(int val=0, ListNode next=null) {
ListNode currentNode = this;
Console.Write($"{currentNode.val}");
while (currentNode.next is {}) {
currentNode = currentNode.next;
Console.Write($" -> {currentNode.val}");