Estructuras de datos listas

Páginas: 14 (3391 palabras) Publicado: 18 de mayo de 2010
-------------------------------------------------
I. Introducción

El objetivo de este artículo es la comprensión de las listas doblemente enlazadas. 
Las listas doblemente enlazadas pueden ser utilizadas cuando son necesarias varias operaciones de inserción o eliminación de elementos. 

-------------------------------------------------
II. Definición

Las listas doblementeenlazadas son estructuras de datos semejantes a las listas enlazadas simples. 
La asignación de memoria es hecha al momento de la ejecución. 

En cambio, en relación a la listas enlazada simple el enlace entre los elementos se hace gracias a dos punteros (uno que apunta hacia el elemento anterior y otro que apunta hacia el elemento siguiente). 

El puntero anterior del primer elemento debeapuntar hacia NULL (el inicio de la lista). 
El puntero siguiente del último elemento debe apuntar hacia NULL (el fin de la lista). 

Para acceder a un elemento, la lista puede ser recorrida en ambos sentidos:
* comenzando por el inicio, el puntero siguiente permite el desplazamiento hacia el próximo elemento.
* comenzando por el final, el puntero anterior permite el desplazamientohacia el elemento anterior.

Resumiendo, el desplazamiento se hace en ambas direcciones, del primer al ultimo elemento y/o del ultimo al primer elemento. 

-------------------------------------------------
III. La construcción del modelo de un elemento de la lista

Para definir un elemento de la lista será utilizado el tipo struct. 
El elemento de la lista contendrá: un campo dato, unpuntero anterior y un puntero siguiente. 

Los punteros anterior y siguiente deben ser del mismo tipo que el elemento, en caso contrario no podrán apuntar hacia un elemento de la lista. 
El puntero anterior permitirá el acceso hacia el elemento anterior mientras que el puntero siguientepermitirá el acceso hacia el próximo elemento. 

typedef struct dl_ElementoLista {char *dato;
struct dl_ElementoLista *anterior;
struct dl_ElementoLista *siguiente;
}dl_Elemento;

Para tener el control de la lista es preferible conservar algunos elementos: el primer elemento, el último elemento, el número de elementos. 

Para ello, será utilizada otra estructura (no es obligatorio, pueden serutilizadas variables). 

typedef struct dl_ListaIdentificacion {
dl_Elemento *inicio;
dl_Elemento *fin;
int tamaño;
}dl_Lista;

El puntero inicio contendrá la dirección del primer elemento de la lista. 
El puntero fin contendrá la dirección del último elemento de la lista. 
La variable tamaño contiene elnúmero de elementos. 

Cualquiera que sea la posición en la lista, los punteros inicio y fin apuntan siempre al primer y último elemento. 
El campo tamaño contendrá el numero de elementos de la lista cualquiera que sea la operación efectuada sobre la lista. 

-------------------------------------------------
IV. Operaciones sobre la lista doblemente enlazadas

Para la inserción y laeliminación, una solo función bastará si está bien concebida en función de las necesidades. 
Sin embargo, debo recordar que este artículo es puramente didáctico. 
Por esta razón he escrito una función para cada operación de inserción y eliminación. 

-------------------------------------------------
A. Inicialización

Modelo de la función: 

void inicialización (Lista*lista);

Esta operación debe ser hecha antes de cualquier otra operación sobre la lista. 
Esta inicializa el puntero inicio y el puntero fin con el puntero NULL, y el tamaño con el valor 0. 

La función 

void inicialización (Liste *liste){
lista->inicio = NULL;
lista->fin = NULL;
tamaño = 0;
}...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Estructuras De Datos, Tad Listas
  • LISTAS, estructura de datos
  • Matriz Comparativa Estructura De Datos Listas Enlazadas
  • Algoritmo y Estructura De Datos Listas
  • estructura de datos dinamicas listas
  • listas estructura de datos
  • Lista de datos
  • Estructura de datos

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS