uoc.ei.tads
Class LlistaDoblementEncadenada<E>

java.lang.Object
  extended by uoc.ei.tads.LlistaEncadenada<E>
      extended by uoc.ei.tads.LlistaDoblementEncadenada<E>
All Implemented Interfaces:
java.io.Serializable, Contenidor<E>, Llista<E>

public class LlistaDoblementEncadenada<E>
extends LlistaEncadenada<E>

Seqüència posicional que es caracteritza per disposar d'operacions basades en la posició que ocupa un element dins del contenidor. Hereta de llista encadenada l'estructura amb un sol encadenament (node següent) i n'afegeix un segon per optimitzar les operacions que necessiten conèixer el node anterior dins de la seqüència.

Since:
1.5
See Also:
Posicio, Serialized Form

Nested Class Summary
protected static class LlistaDoblementEncadenada.NodeDoblementEncadenat<E>
          Classe que implementa un node amb dos encadenaments a node.
protected static class LlistaDoblementEncadenada.RecorregutBidireccionalLlista<E>
          Classe que proporciona un recorregut de les posicions.
 
Nested classes/interfaces inherited from class uoc.ei.tads.LlistaEncadenada
LlistaEncadenada.NodeEncadenat<E>, LlistaEncadenada.RecorregutUnidireccionalLLista<E>
 
Field Summary
 
Fields inherited from class uoc.ei.tads.LlistaEncadenada
darrer, n
 
Constructor Summary
LlistaDoblementEncadenada()
           
 
Method Summary
protected  LlistaEncadenada.NodeEncadenat<E> anterior(LlistaEncadenada.NodeEncadenat<E> node)
          Retorna el node anterior al rebut com a paràmetre.
 IteradorBidireccional<E> elements(RecorregutBidireccional.IniciRecorregut inici)
          Accessor de lectura dels elements que hi ha al contenidor.
 E esborrar(Posicio<E> node)
          Esborra la posició rebuda.
 E esborrarPrimer()
          Esborra la primera posició de la llista.
 E esborrarSeguent(Posicio<E> node)
          Esborra la posició següent.
protected  LlistaEncadenada.NodeEncadenat<E> novaPosicio(LlistaEncadenada.NodeEncadenat<E> node, E elem)
          Crea un node encadenat.
 RecorregutBidireccional<E> posicions(RecorregutBidireccional.IniciRecorregut inici)
          Mètode que soporta múltiples recorreguts, de les posicions del contenidor, simultanis i independents entre ells.
 
Methods inherited from class uoc.ei.tads.LlistaEncadenada
afegirAbansDe, afegirAlFinal, afegirAlPrincipi, afegirDespresDe, elements, estaBuit, intercanviar, nombreElems, posicions, reemplacar, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

LlistaDoblementEncadenada

public LlistaDoblementEncadenada()
Method Detail

esborrarPrimer

public E esborrarPrimer()
                 throws ExcepcioContenidorBuit
Esborra la primera posició de la llista.

Specified by:
esborrarPrimer in interface Llista<E>
Overrides:
esborrarPrimer in class LlistaEncadenada<E>
Returns:
element que hi havia a la posició
Throws:
ExcepcioContenidorBuit - si la llista està buida

esborrar

public E esborrar(Posicio<E> node)
Esborra la posició rebuda.

Specified by:
esborrar in interface Llista<E>
Overrides:
esborrar in class LlistaEncadenada<E>
Parameters:
node - posició que es vol eliminar
Returns:
element que hi havia a la posició
Throws:
ExcepcioPosicioInvalida - si la posició és null o no vàlida

esborrarSeguent

public E esborrarSeguent(Posicio<E> node)
Esborra la posició següent.

Specified by:
esborrarSeguent in interface Llista<E>
Overrides:
esborrarSeguent in class LlistaEncadenada<E>
Parameters:
node - posició anterior a la que es vol eliminar; si és null s'elimina la primera posició.
Returns:
element que hi havia a la posició següent
Throws:
ExcepcioPosicioInvalida - si la posició és no vàlida

anterior

protected LlistaEncadenada.NodeEncadenat<E> anterior(LlistaEncadenada.NodeEncadenat<E> node)
Retorna el node anterior al rebut com a paràmetre. En aquesta llista doblement encadenada l'operació té un cost temporal u: O(1).

Overrides:
anterior in class LlistaEncadenada<E>
Parameters:
node - posició de referència, no null
Returns:
node anterior al rebut com a paràmetre

novaPosicio

protected LlistaEncadenada.NodeEncadenat<E> novaPosicio(LlistaEncadenada.NodeEncadenat<E> node,
                                                        E elem)
Crea un node encadenat. Es pot sobreescriure per les subclasses que necessitin treballar amb descendents de NodeEncadenat.

Overrides:
novaPosicio in class LlistaEncadenada<E>
Parameters:
node - posició anterior a la del nou node; pot ser nul
elem - element que es vol afegir a la llista
Returns:
node nou contenint l'element rebut com a paràmetre; situat entre el node rebut com a paràmetre i el seu següent

elements

public IteradorBidireccional<E> elements(RecorregutBidireccional.IniciRecorregut inici)
Accessor de lectura dels elements que hi ha al contenidor. Retorna una enumeració. Es pot obtenir un llistat amb un parell de línies de codi:
 for ( Iterador it = tad.elements(); it.hiHaSeguent(); )
    System.out.println(it.seguent()); 
Enumerar és simplement enunciar l'una darrere l'altra (les coses d'una sèrie, les parts d'un tot). Però si el contenidor té definit algun tipus d'ordenació o de recorregut, l'enumeració ha de ser conseqüent i oferir els elements per ordre (FIFO, LIFO, inordre, etc.), sense alterar l'estat actual del contenidor. Si durant el recorregut s'altera l'estructura de posicions del contenidor, els resultats són imprevisibles.

Parameters:
inici - on s'inicia el recorregut; valors vàlids són: - IniciRecorregut.PRINCIPI i - IniciRecorregut.FINAL
Returns:
enumeració dels elements del contenidor en un sentit
Throws:
ExcepcioPosicioInvalida - si es vol obtenir el següent element de l'enumeració i no n'hi ha cap o no n'hi ha cap més
See Also:
Iterador.hiHaSeguent(), Iterador.seguent(), IteradorBidireccional.hiHaAnterior(), IteradorBidireccional.anterior()

posicions

public RecorregutBidireccional<E> posicions(RecorregutBidireccional.IniciRecorregut inici)
Mètode que soporta múltiples recorreguts, de les posicions del contenidor, simultanis i independents entre ells.

Returns:
enumeració de les posicions del contenidor
See Also:
RecorregutBidireccional