LISTAS ENLAZADAS SIMPLES Y LISTAS DOBLES EN JAVA
Lista enlazada simple en Java
En este vídeo veremos como crear una lista enlazada simple en Java. una lista enlazada es una de las estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de datos. Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o dos referencias (punteros) al nodo anterior o posterior.
REPRODUCIR VIDEO
Listas doblemente enlazadas en Java
1. Introducción listas dobles
typedef struct celda{
tipoelemento elemento;
struct celda *siguiente,*anterior;
}tipocelda;
typedef tipocelda *posicion;
void borrar (posicion p)
{
if (p->anterior != NULL)
p->anterior->siguiente = p->siguiente;
if (p->siguiente != NULL)
p->siguiente->anterior = p->anterior;
free(p);
}
- La función de creación debe alojar memoria para la cabecera y hacer que los punteros siguiente y anterior apunten a ella, devolviendo un puntero a dicha cabecera.
- La función primero(l) devolverá un puntero al nodo siguiente a la cabecera.
- La función fin(l) devolvera un puntero al nodo cabecera.
- Trabajar con varias posiciones simultáneamente tendrá un comportamiento idéntico al de las listas enlazadas excepto respecto al problema referente al borrado cuando se utilizan posiciones consecutivas. Es posible implementar la función de borrado de tal forma que borrar un elemento de una posición p invalida el valor de dicha posición p y no afecta a ninguna otra posición. Nosotros en nuestra implementación final optaremos por pasar un puntero a la posición para el borrado de forma que la posición usada quede apuntando al elemento siguente que se va a borrar al igual que ocurría en el caso de las listas simples. Otra posible solución puede ser que la función devuelva la posición del elemento siguiente a ser borrado.
- La inserción se debe hacer a la izquierda del nodo apuntado por la posición ofrecida a la función insertar. Esto implica que al contrario que en las listas simples, al insertar un nodo, el puntero utilizado sigue apuntando al mismo elemento al que apuntaba y no al nuevo elemento insertado. Si se desea, es posible modificar la función de forma que se pase un puntero a la posición de inserción para poder modificarla y hacer que apunte al nuevo elemento insertado. En cualquier caso, el comportamiento final de la función deberá quedar reflejado en el conjunto de especificaciones del TDA.
2. Operaciones básicas de una lista doblemente enlazada.
- tLista crear ()
- void destruir (tLista l)
- tPosicion primero (tLista l)
- tPosicion fin (tLista l)
- void insertar (tElemento x, tPosicion p, tLista l)
- void borrar (tPosicion *p, tLista l)
- tElemento elemento(tPosicion p, tLista l)
- tPosicion siguiente (tPosicion p, tLista l)
- tPosicion anterior (tPosicion p, tLista l)
- tPosicion posicion (tElemento x, tLista l)
Epecificacion y semántica sintactica
- tLista crear ()
Argumentos: Ninguno.
Efecto: (Constructor primitivo). Crea un objeto del tipo tLista. - void destruir (tLista l)
Argumentos: Una lista.
Efecto: Destruye el objeto l liberando los recursos que empleaba. Para volver a usarlo habrá que crearlo de nuevo. - tPosicion primero (tLista l)
Argumentos: Una lista.
Efecto: Devuelve la posición del primer elemento de la lista. - tPosicion fin (tLista l)
Argumentos: Una lista.
Efecto: Devuelve la posición posterior al último elemento de la lista. - void insertar (tElemento x, tPosicion p, tLista l)
Argumentos:l: Es modificada.
p: Es una posición válida para la lista l.
x: Dirección válida de un elemento del tipo T con que se instancia la lista, distinta de NULL.Efecto: Inserta elemento x en la posición p de la lista l desplazando todos los demás elementos en una posición.
- void borrar (tPosicion *p, tLista l)
Argumentos:l: Es modificada.
p: Es una posición válida para la lista l.Efecto: Elimina el elemento de la posición p de la lista l desplazando todos los demás elementos un una posición.
- tElemento elemento(tPosicion p, tLista l)
Argumentos:l: Una lista.
p: Es una posción válida de la lista l.Efecto: Devuelve el elemento que se encuentra en la posición p de la lista l.
- tPosicion siguiente (tPosicion p, tLista l)
Argumentos:l: Una lista.
p: Es una posición válida para la lista l, distinta de fin(l).Efecto: Devuelve la posición siguiente a p en l.
- tPosicion anterior (tPosicion p, tLista l)
Argumentos:l: Una lista.
p: Es una posición válida para la lista l, distinta de primero(l).Efecto: Devuelve la posición que precede a p en l.
- tPosicion posicion (tElemento x, tLista l)
Argumentos:l: Una lista.
x: Dirección válida de un elemento del tipo T con que se instancia la lista, distinta de NULL.Efecto: Si x se encuentra entre los elementos de la lista l, devuelve la posición de su primera ocurrencia. En otro caso, devuelve la posición fin(l).
3. Eficiencia de una lista doblemente enlazada
Si quieres conocer otros artículos parecidos a LISTAS ENLAZADAS SIMPLES Y LISTAS DOBLES EN JAVA puedes visitar la categoría Java.
Entradas relacionadas