Está en la página 1de 2

Listas enlazadas indizadas

Es una variante de listas enlazadas, donde stas se manipulan mediante posiciones, generalizando la idea de los arreglos para estructuras no acotadas. Las posiciones se pueden manejar de forma explcita (1) o implcita (2). Esta variante aplica tanto a listas enlazadas simples como dobles. 1) Indizado explcito. Esta variante puede implementarse de varias maneras. La idea es que los nodos tengan un nmero que indica su posicin en la lista, y tomamos como posicin 0 a la primera posicin (comienzo de la lista) . Esta implementacin refleja directamente la generalizacin de listas a arreglos, pues tenemos un ndice para cada nodo, pero no debemos olvidar que los accesos a los nodos numerados seguirn siendo de forma secuencial, y no directa como sucede cuando accedemos a un elemento de un arreglo a travs de su ndice. 2) Indizado implcito. Para el caso de las posiciones implcitas, se pueden implementar usando un puntero que apunta a la posicin actual, y esta posicin es la ltima en la que se realiz algn cambio en la lista. Es mediante este puntero que se hacen inserciones, eliminaciones y bsquedas sobre la lista, es decir representa nuestro iterador. Para el caso de manejo implcito, si nuestra estructura es simple enlazada, entonces nuestro puntero iterador slo podr avanzar hacia adelante; si es doble enlazada podr avanzar hacia adelante o hacia atrs. En cualquiera de estos casos las recorridas son circulares, es decir, si es una lista simple, nuestro iterador volver al inicio de la lista una vez que lleg al final, y si es una lista doble, adems de esto, el iterador volver al final una vez que se lleg al inicio y siga retrocediendo. Observar, que pese a que las recorridas son circulares, no estamos trabajando con listas circulares ya que el ltimo nodo no apunto al primero ni viceversa.

1) Representacin para una lista enlazada simple con manejo explcito.

*************************************************************************

2) Representacin para una lista enlazada simple con manejo implcito. Implementacin para una lista de naturales.

LNat = POINTER TO NodoLista; NodoLista = RECORD elem: CARDINAL; sig: LNat; END; LNatIndizada = POINTER TO NodoListaIndizada; NodoListaIndizada = RECORD inicio: LNat; actual: LNat; END;

Graficamente, tenemos el siguiente diagrama para una lista enlazada simple: