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; } }

Rispondi quotando