Академический Документы
Профессиональный Документы
Культура Документы
Al contrario que las estructuras de datos estticas (arrays, vectores y tablas) en las que su
tamao en memoria se establece durante la compilacin y permanece inalterable durante la
ejecucin del programa, las estructuras de datos dinmicas crecen y se contraen a medida que
se ejecuta el programa.
Las estructuras dinmicas son generadas mediante un tipo de dato conocido con el nombre de
puntero. Una variable de tipo puntero almacena la direccin o posicin de otra variable,
variable dinmica, y la principal ventaja que representa manejar punteros es que se pueden
adquirir posiciones de memoria a medida que se vayan necesitando y liberarlas cuando ya no se
requieren.
CONTINUACIN
No
Lineales
Anteriormente definamos un TAD lineales
como un conjunto de valores sobre los
que se aplica un conjunto dado de
operaciones que cumplen determinadas
Listas rboles
propiedades, y que adems son creados
por el programador. Ahora bien los TAD
se dividen en: TAD Lineales, TAD No Pilas Grafos
Lineales.
Colas
LISTAS
DEFINICIN
Una lista enlazada es una coleccin o secuencia de elementos lineal de estructuras auto
referenciadas llamadas nodos, en la que cada elemento se conecta al siguiente elemento
por un enlace a travs de enlaces de apuntador o puntero, de ah el trmino lista
enlazada.
La idea bsica consiste en construir una lista cuyos elementos, llamados nodos, se
componen de dos partes (campos): la primera parte contiene la informacin y es, por
consiguiente, un valor de un tipo genrico (denominado Dato, TipoElemento, Info, etc.),
y la segunda parte es un enlace que apunta al siguiente nodo de la lista.
Se tiene acceso a una lista enlazada va un apuntador al primer nodo de la lista. Se
puede tener acceso a los nodos subsecuentes va el apuntador de enlace almacenado
en cada nodo. Por regla convencional, para marcar el fin de la lista, el apuntador de
enlace, en el ltimo nodo de una lista, se define a NULL.
En una lista enlazada los datos se almacenan dinmicamente, cada nodo se crea
conforme sea necesario (es por ello que suelen llamarse estructuras dinmicas). Un
nodo puede contener datos de cualquier tipo, incluyendo otras struct.
VENTAJAS
Las listas enlazadas son dinmicas, por lo que conforme sea necesario la longitud de
una lista puede aumentar o disminuir. Por su parte, el tamao de un arreglo no puede
ser modificado, porque la memoria del arreglo es asignada en tiempo de compilacin.
Los arreglos pueden llenarse. Las listas enlazadas slo se llenan cuando el sistema no
tiene suficiente memoria para satisfacer las solicitudes de asignacin dinmica de
almacenamiento.
REPRESENTACIN GRFICA
CABEZA COLA
CLASIFICACIN DE LAS LISTAS
Las inserciones se pueden realizar por cualquier punto de la lista. Por la cabeza (inicio),
por el final (cola), o a partir o antes de un nodo determinado de la lista.
Las eliminaciones tambin se pueden realizar en cualquier punto de la lista; adems se
eliminan nodos dependiendo del campo de informacin o dato que se desea suprimir
de la lista.
OPERACIONES
Insertar. Aade un elemento en cualquier posicin de la lista. Si esta operacin tiene xito, se devuelve el valor
booleano verdadero; en otro caso, se devuelve el valor booleano falso.
Aadir. Aade un elemento a la cola de la lista. Si esta operacin tiene xito, se devuelve el valor booleano
verdadero; en otro caso, se devuelve el valor booleano falso.
Obtener. Devuelve el elemento almacenado en cierta posicin de la lista o el valor nulo si la posicin no existe.
Eliminar. Elimina un elemento almacenado en cierta posicin de la lista. Si esta operacin tiene xito, se
devuelve el valor booleano verdadero; en otro caso, se devuelve el valor booleano falso.
Longitud. Devuelve la longitud de la lista.
Inicio. Sita la posicin actual de la lista a la cabeza.
Actual. Devuelve la posicin actual de la lista.
Siguiente. Incrementa la posicin actual de la lista y devuelve su valor. Es decir que recorre la lista.
LISTA SIMPLEMENTE ENLAZADA
Consideraciones:
En esta lista existe un nodo especial: el primero. Normalmente diremos que nuestra lista es
un puntero a ese primer nodo y llamaremos a ese nodo la cabeza de la lista.
Cuando el puntero que usamos para acceder a la lista vale NULL, diremos que la lista est
vaca.
DEFINICIN DEL NODO DE LA LISTA
class NodoLista {
private object datos;
public object Datos { get { return datos; } set { datos = value; } }
private NodoLista siguiente;
public NodoLista Siguiente { get { return siguiente; } set { siguiente = value; } }
DEFINICIN DEL NODO DE LA LISTA
CONSTRUCTOR 1
CONSTRUCTOR 2
class Lista {
private NodoLista primerNodo;
private NodoLista ultimoNodo;
private string nombre;
NOMBRE
El nuevo elemento que se desea incorporar a una lista se puede insertar de distintas formas, segn la
posicin o el punto de insercin. Este puede ser:
El algoritmo se enfoca para eliminar un nodo que contiene un dato, sigue estos pasos:
Bsqueda del nodo que contiene el dato. Se ha de obtener la direccin del nodo a eliminar y
la direccin del anterior.
El enlace del nodo anterior que apunte al nodo siguiente al que se elimina.
Si el nodo a eliminar es el cabeza de la lista (primero), se modifica primero para que tenga la
direccin del siguiente nodo.
Por ltimo, la memoria ocupada por el nodo se libera.
ELIMINAR AL FRENTE
public object EliminarDelFrente()
{
if (EstaVacia())
throw new ExcepcionListaVacia(nombre);
2 3 5 8
Las listas doblemente enlazadas al igual que las listas simples cuentan con una serie
de operaciones y casos que permiten modificar o simplemente recorrer la lista para
obtener informacin de la misma.
La operacin de insertar un nuevo nodo en la lista debe realizar ajustes de los dos
punteros.
La operacin de eliminar un nodo de la lista doble necesita enlazar, mutuamente, el
nodo anterior y el nodo siguiente del que se borra.
LISTA CIRCULAR SIMPLEMENTE ENLAZADA Y DOBLEMENTE
ENLAZADA
La construccin de una lista circular se puede hacer con enlace simple o enlace doble
entre sus nodos.
La clase ListaCircular dispone del puntero de acceso a la lista, junto a las funciones que
implementan las operaciones.
La creacin de un nodo vara respecto al de las listas no circulares, el campo enlace,
en vez de inicializarse a NULL, se inicializa para que apunte a s mismo, de tal forma que
es una lista circular de un solo nodo. La funcionalidad (la interfaz) de la clase
NodoCircular es la misma que la de un Nodo de una lista enlazada.
REPRESENTACIN GRFICA
SIMPLE
DOBLE