Salve a tutti ho iniziato da poco a programmare in Java e stavo smanettando con le liste linkate ordinate in ordine crescente e dopo che ho definito il metodo inserimento la console mi segnala questo errore:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The operator < is undefined for the argument type(s) H, H
l'errore mi è stato segnalato nel confronto iter.getElement() < x
Qui c'è il codice con la procedura di inserimento della lista
public class ListaOrdinata<H> extends Lista<H> {
public ListaOrdinata<H> insert(H x){
if(isEmpty())
head=tail=new Node<H>(x);
else{
Node<H> nuovo = new Node<H>(x);
iter=head;
while((iter != null) && (iter.getElement() < x))
iter=iter.getNext();
if(iter==head){
head.setPrevious(nuovo);
nuovo.setNext(head);
head=nuovo;
}
else if(iter==tail){
tail.setNext(nuovo);
nuovo.setPrevious(tail);
tail=nuovo;
}
else{
iter.setPrevious(nuovo);
iter.getPrevious().setNext(nuovo);
nuovo.getPrevious().setNext(iter.getPrevious());
nuovo.setNext(iter);
}
}
return this;
}
}
la classe di base:
public class Lista<H>{
Lista(){
head=tail=iter=null;
}
public Lista<H> insert(H x){
iter=new Node<H>(x);
if(isEmpty())
tail=new Node<H>(x);
else{
head.setPrevious(iter);
iter.setNext(head);
}
head=iter;
return this;
}
public Lista<H> delete(H x){
if(!isEmpty()){
Node<H> z = search(x);
if(z!=null){
if(z==head){
head=head.getNext();
head.setPrevious(null);
}
else if(z==tail){
tail=tail.getPrevious();
tail.setNext(null);
}
else{
z.getPrevious().setNext(z.getNext());
z.getNext().setPrevious(z.getPrevious());
}
}
else
System.out.println("Elemento inesistente");
}
else
System.out.println("Lista vuota!");
return this;
}
public void print(){
iter=head;
while(iter != null){
System.out.print(iter.getElement());
System.out.print(" ");
iter=iter.getNext();
}
System.out.println();
}
protected Node<H> search(H x){
iter=head;
while(iter!=null && iter.getElement() != x)
iter=iter.getNext();
return iter;
}
protected boolean isEmpty(){return head==null?true:false;}
protected Node<H> head, tail, iter;
}
e la classe del nodo:
public class Node<H>{
public Node(){}
public Node(H x){
element = x;
previous=next=null;
}
public Node<H> getPrevious(){return previous;}
public Node<H> getNext(){return next;}
public H getElement(){return element;}
public void setPrevious(Node<H> p){previous=p;}
public void setNext(Node<H> p){next=p;}
public void setElement(H x){element=x;}
private Node<H> previous, next;
private H element;
}
come posso risolvere questo problema?
grazie in anticipo