uoc.ei.tads
Class ListaDoblementeEncadenada.RecorridoBidireccionalLista<E>

java.lang.Object
  extended by uoc.ei.tads.ListaEncadenada.RecorridoUnidireccionalLista<E>
      extended by uoc.ei.tads.ListaDoblementeEncadenada.RecorridoBidireccionalLista<E>
All Implemented Interfaces:
java.io.Serializable, Recorrido<E>, RecorridoBidireccional<E>
Enclosing class:
ListaDoblementeEncadenada<E>

protected static class ListaDoblementeEncadenada.RecorridoBidireccionalLista<E>
extends ListaEncadenada.RecorridoUnidireccionalLista<E>
implements RecorridoBidireccional<E>

Clase que proporciona un recorrido de las posiciones. Basada en el pattern Iterator, soporta múltiples recorridos simultáneos y independientes del contenedor. Es sensible a eventuales alteraciones de la estructura de posiciones y se actualiza de acuerdo con los cambios.

See Also:
Recorrido.haySiguiente(), Recorrido.siguiente(), RecorridoBidireccional.hayAnterior(), RecorridoBidireccional.anterior(), Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from interface uoc.ei.tads.RecorridoBidireccional
RecorridoBidireccional.InicioRecorrido
 
Field Summary
protected  boolean tieneAnterior
          puede haber anterior (control del encadenamiento circular).
 
Fields inherited from class uoc.ei.tads.ListaEncadenada.RecorridoUnidireccionalLista
nodoActual, tieneSiguiente, ultimo
 
Constructor Summary
ListaDoblementeEncadenada.RecorridoBidireccionalLista(ListaDoblementeEncadenada<E> lista, RecorridoBidireccional.InicioRecorrido sentido)
          Constructor con un parámetro.
 
Method Summary
 Posicion<E> anterior()
          Primero retrocede, si se puede, y después retorna la posición.
 boolean hayAnterior()
          Comprueba si hay una última o anterior posición.
 Posicion<E> siguiente()
          Primero avanza, si se puede, y después retorna la posición.
 
Methods inherited from class uoc.ei.tads.ListaEncadenada.RecorridoUnidireccionalLista
haySiguiente
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface uoc.ei.tads.Recorrido
haySiguiente
 

Field Detail

tieneAnterior

protected boolean tieneAnterior
puede haber anterior (control del encadenamiento circular).

Constructor Detail

ListaDoblementeEncadenada.RecorridoBidireccionalLista

public ListaDoblementeEncadenada.RecorridoBidireccionalLista(ListaDoblementeEncadenada<E> lista,
                                                             RecorridoBidireccional.InicioRecorrido sentido)
Constructor con un parámetro.

Parameters:
sentido - sentido del recorrido; valores válidos son: -IteradorBidireccional.NORMAL y -IteradorBidireccional.INVERSO
Method Detail

hayAnterior

public boolean hayAnterior()
Comprueba si hay una última o anterior posición. Es sensible a eventuales alteraciones de la estructura de posiciones. Retorna falso si está vacío o ya se ha visitado la última posición.

Specified by:
hayAnterior in interface RecorridoBidireccional<E>
Returns:
cierto o falso, según si se puede ir hacia atràs o no se puede

siguiente

public Posicion<E> siguiente()
Primero avanza, si se puede, y después retorna la posición.

Specified by:
siguiente in interface Recorrido<E>
Overrides:
siguiente in class ListaEncadenada.RecorridoUnidireccionalLista<E>
Returns:
siguiente posición
Throws:
ExcepcionPosicionInvalida - si la siguiente posición no existe

anterior

public Posicion<E> anterior()
Primero retrocede, si se puede, y después retorna la posición.

Specified by:
anterior in interface RecorridoBidireccional<E>
Returns:
anterior posición
Throws:
ExcepcionPosicionInvalida - si el anterior posición no existe