Метод deleteElement реализован не правильно. Операция '==' сравнивает ссылки на объекты, а не сами объекты.
Например, если у вас в списке есть объект Node со значением поля data = 10, и вы хотите его удалить
Node delNode = new Node();
delNode.data = 10;
deleteElement(delNode); // ничего не удалится
потому что ссылка delNode и ссылка в списке ссылаются на разные объекты.
В джаве для сравнения переопределяют метод equals, в котором реализуют сравнение полей класса.
Вот так это должно выглядеть
if (delNode.equals(head)) {
head = head.next;
return;
} else {
for (Node p = head; p != null; p = p.next) {
if (delNode.equals(p.next)) {
p.next = delNode.next;
}
}
Отличие структуры от класса в том, что класс позволяет реализовать наследование, инкапсуляцию и полиморфизм.