Ejemplos en pascal de una lista doblemente enlazada
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 4,57 KB
ESTRUCTURA DE DATOS:
¿Qué es una lista enlazada?
Corresponde a una estructura lineal compuesta por una colección de datos homogéneos con alguna relación entre ellos. Dicha estructura se crea a través del método dinámico de memoria.
En una lista enlazada el orden de los elementos está determinado por un campo enlace (puntero)
Explícito en cada elemento, por ejemplo: pilas y filas dinámicas.
Tipos de Listas Enlazadas:
-Listas lineales simplemente enlazadas
-Listas Circulares
-
Listas doblemente enlazadas
-Listas múltiplemente enlazadas
-Listas Simplemente Enlazadas
Lista Lineal Simplemente Enlazada.
Una lista lineal simplemente enlazada es una estructura en la que el cada elemento enlaza con el siguiente. El recorrido se inicia a partir de un puntero ubicado al comienzo de la lista.
El último elemento (nodo) de la lista apunta a una dirección vacía que indica el fin de la estructura.
Cabe destacar que en una lista lineal enlazada, sólo es posible acceder a los elementos sucesores pero no antecesores, además, siempre es necesario mantener un puntero a la cabeza de la
lista para acceder a los demás elementos
Lista Circulares.
Una lista circular es una lista lineal en la que el último elemento enlaza con el primero. Entonces es posible acceder a cualquier elemento de la lista desde cualquier punto dado.
La definición de tipo es equivalente a la anterior sólo se debe modificar la dirección a la que apunta el enlace ubicado en el último nodo.
Las operaciones sobre una lista circular resultan más sencillas. Cuando recorremos una lista circular, diremos que hemos llegado al final de la misma cuando nos encontremos de nuevo
en el punto de partida; suponiendo que en este punto se deja un puntero fijo. Otra solución al problema anterior sería ubicar en cada lista circular un elemento especial identificable,
como lugar de parada. Este elemento especial recibe el nombre de cabeza de la lista. Esto presenta la ventaja de que la lista circular no estará nunca vacía.
Listas Doblemente Enlazada.
Una lista doblemente enlazada es una lista lineal en la que cada elemento tiene dos enlaces, uno al elemento siguiente y otro al elemento anterior.
Esto permite recorrer la lista en cualquier dirección.
Las operaciones sobre una lista doblemente enlazada se realizan sin ninguna dificultad. Sin embargo, casi siempre es mucho más fácil la manipulación de las mismas, cuando se añade un
elemento de cabeza y existe un doble enlace entre el último elemento y el primero. Esta estructura recibe el nombre de lista circular doblemente enlazada.
Colas (Primero en entrar primero en salir): Una cola es un tipo especial de lista abierta en la que sólo se pueden insertar nodos en uno de los extremos de la lista y sólo se
pueden eliminar nodos en el otro. Además, como sucede con las pilas, las escrituras de datos siempre son inserciones de nodos, y las lecturas siempre eliminan el nodo leído.
Todos los bufer aplican algoritmos colas
Una vez en la cola no lo puedo usar hasta que termine.
La fila es estática, la cola no (son dinámicas).
Pilas (Primero en entrar, ultimo en salir): Para la pila necesitaremos un puntero que se llama tope y lo vamos a utilizar para saber la siguiente posición de la pila.
Las pilas tienen tamaño estático (su tamaño siempre es conocido)
Funciones para pilas y colas (comunes): PUSH() – permite colocar elementos de la cola y pila.
POP() – Permite sacar elementos de la pila o cola.
Una pila es un tipo especial de lista abierta en la que sólo se pueden insertar y eliminar nodos en uno de los extremos de la lista. Estas operaciones se conocen como "push" y "pop".
Árbol Binario: Es una estructura dinámica, volátil, secuencial y no lineal. No lineal porque tiene 3 algoritmos de orden distintos: PRE ORDEN (R/I/D) – IN ORDEN (I/R/D) – POST ORDEN (I/D/R).
La raíz no se considera nivel.
PRE ORDEN: R/I/D
IN ORDEN: I/R/D
POST ORDEN: I/D/R
Struct hoja
{
val1;
val2;
.
.
valn;
struct hoja*izq;
struct hoja*der;
}
OTROS:
puntero anterior/variables/puntero siguiente
lineal: recorre la estructura en un solo sentido.