Посмотрите на свой deleteNode () во время кода цикла.
while(position != null && counter != null)
{
itemAtPosition = position.item;
if(itemAtPosition == target)
{
position = position.link;
isGone = true;
}
counter = counter.link;
}
Вы обновляете счетчик, но никогда не обращаетесь к нему.позиция никогда не меняется, поэтому строка
if(itemAtPosition == target)
никогда не возвращает true.Я подозреваю, что где-то вам нужно проверить на counter.item!