Salve a tutti devo implementare l'iteratore per una lista linkata creata da me.
Ho creato l'interfaccia dictionary<K,V> che estende Iterable <K> e la classe LinkedList<K,V> che implementa Dictionary<K,V>.
Ora ho un problema : Come costruisco l'iteratore per la classe linkedList?
grazie in anticipo
codice:
public interface Dictionary<K, V> extends Iterable<K> {
public void insert(K key, V value);
public void delete(K KEY);
public V search(K key);
}
codice:
public class LinkedList<K, V> implements Dictionary<K,V>{
Record list = null;
class Record<K,V> {
K key;
V value;
Record successivo;
Record precedente;
Record(K key, V value){
this.key = key;
this.value = value;
}
}
@Override
public Iterator<K> iterator() {
// TODO Auto-generated method stub
return null;
}
@Override
public void insert(K key, V value) {
Record nuovo = new Record(key, value);
if(list==null){
list = nuovo.successivo = nuovo.precedente = nuovo;
}else{
nuovo.successivo = list.successivo;
list.successivo.precedente = nuovo;
list.successivo = nuovo;
nuovo.precedente = list;
}
}
@Override
public void delete(K key) {
Record p = null;
if(list!=null)
for(p=list.successivo;;p=p.successivo){
if(p.key.equals(key))
break;
if(p==list){
p = null;
break;
}
}
if(p==null)
throw new RuntimeException("elemento non trovato");
if(p.successivo == p)
list = null;
else {
if(list==p)
list = p.successivo;
p.successivo.precedente = p.successivo;
p.precedente.successivo =p.precedente;
}
}
@Override
public V search(K key) {
if(list==null)
throw new RuntimeException("lista vuota");
for(Record p =list.successivo;;p=p.successivo){
if(p.key.equals(key))
return (V) p.value;
if(p==list)
return null;
}
}