bueno lo que sucede es que debo implementar un iterator por saltos en una lista Circula Doblemente enlazada, ya tengo una implementacion pero me dicen que asi no lo haga
ejemplo: si el numero de saltos es 2 entonces se visitaran los nodos en los indices
0,2,4,6,8..... si fuera 3 entonces 0,3,6,9........ y asi sucesivamente
Código:
Me dicen que debo cambiar ciclo y quitar break y la excepcion package ufps.util; import java.util.Iterator; /** * Clase para el manejo de Iteradores en una Lista Circular Doble Enlazada<T> con nodo cabecera * @author Marco Adarme * @version 2.0 */ public class IteratorSaltos<T> implements Iterator<T> { private NodoD<T> cab, posicion; private int num=0; /** * Constructor con parametros de la clase * @param cab es de tipo Nodo<T> que contiene el nodo cabeza de la lista */ IteratorSaltos(NodoD<T> cab,int num) { this.cab=cab; this.posicion=this.cab.getSig(); this.num=num; } /** * remueve un dato de la lista */ @Override public void remove() {} /** * Método que informa si existe otro elemento en la lista para seguir iterando * @return un tipo boolean que informa si existe o no un dato en la lista, desde la posición * actual del cursor. */ @Override public boolean hasNext() { return (this.posicion!=this.cab); } /** * Método que retorna un dato de la posición actual del cursor del iterador. * El cursor queda en la siguiente posición. * @return un tipo T que contiene el dato actual */ @Override public T next() { T dato = null; if (this.hasNext()) { int con = 0; NodoD<T> aux = this.posicion; for (; aux != this.cab; aux = aux.getSig()) { if (con == this.num) { break; } con++; } if (aux != this.cab) { dato = this.posicion.getInfo(); this.posicion = aux; if(this.posicion.getSig()==this.cab) { this.posicion=this.cab; } return dato; } throw new RuntimeException("No alcanzan los nodos para dar el salto "); } throw new RuntimeException("No hay mas elementos "); } //fin de la clase }
Código:
alguien me podria explicar otra forma de hacerlo :s for (; aux != this.cab; aux = aux.getSig()) { if (con == this.num) { break; } con++; } quitar esta excepcion: throw new RuntimeException("No alcanzan los nodos para dar el salto "); }