Liste Liée Méthode Delete

Voici une définition de classe pour ma Liste Liée. Je lance un programme de test qui crée un nouveau LinkedList et insère le nombre "3, 2, 1", puis imprime la liste. Cela fonctionne très bien. Cependant, lorsque j'essaie de le supprimer "3" ou "2," la méthode delete ne se termine jamais. Quand j'essaie de le supprimer "1", il se contente d'afficher la liste complète comme si rien n'avait été supprimé.

public class LinkedListTest implements LinkedList {
private Node head;
public LinkedListTest(){
head = new Node();
}
public void insert(Object x){
if (lookup(x).equals(false)){
if (head.data == null)
head.data = x;
else{
//InsertLast
Node temp = head;
while (temp.next != null){
temp = temp.next;
}
Node NewNode = new Node();
NewNode.data = x;
NewNode.next = null;
temp.next = NewNode;
}
}
//Runtime of insert method will be n, where n is the number of nodes
}
public void delete(Object x){
if (lookup(x).equals(true)){
if (head.data == x)
head = head.next;
else{
Node temp = head;
while (temp.next != null){
if ((temp.next).data == x)
temp.next = (temp.next).next;
else
temp = temp.next;
}
}
}
}
public Object lookup(Object x){
Node temp = head;
Boolean search = false;
if (head.data == x)
search = true;
while (temp.next != null){
if (temp.data == x){
search = true;
}
else{
temp = temp.next;
}
}
return search;
}
public boolean isEmpty(){
if (head.next == null && head.data == null)
return true;
else
return false;
}
public void printList(){
Node temp = head;
System.out.print(temp.data + " ");
while (temp.next != null){
temp = temp.next;
System.out.print(temp.data + " ");
}
}
}

EDIT: Voici le nœud de classe:

public class Node {
public Object data;
public Node next;
public Node(){
this.data = null;
this.next = null;
}
}