Professional Documents
Culture Documents
Estructura de Datos
Forma de organizar un conjunto de datos con el objetivo de facilitar su manipulación. Define la
organización y la interrelación de éstos y un conjunto de operaciones que se pueden realizar sobre
ellos.
Operaciones básicas
Manejo de Memoria
Datos Estáticos: su tamaño y forma es constante durante la ejecución de un programa y por tanto
se determinan en tiempo de compilación. El ejemplo típico son los arrays. Tienen el problema de
que hay que dimensionar la estructura de antemano, lo que puede conllevar desperdicio o falta de
memoria.
Datos dinámicos: su tamaño y forma es variable (o puede serlo) a lo largo de un programa, por lo
que se crean y destruyen en tiempo de ejecución. Esto permite dimensionar la estructura de datos
de una forma precisa: se va asignando memoria en tiempo de ejecución según se va necesitando.
Colas (Queue)
Estructura lineal de tipo FIFO (First In, First Out). Se pueden realizar las siguientes dos operaciones:
Formas de implementación:
- Arreglo y dos variables una para el inicio y fin de la cola
- Listas ordenadas
Pilas (stack)
Estructura lineal. Una estructura de datos en la cual solo se pueden hacer 2 operaciones:
Listas
También hay veces que se requieren tener listas de números y agregar números a dichas listas
pero no al final ni al principio, sino en medio.
Para solucionar estos y otros problemas, existen las litas enlazadas.
Las listas enlazadas son estructuras de datos compuestas por una sucesión de elementos llamados
nodos; en la que cada nodo contiene un dato y la dirección del próximo nodo, en caso de que haya
próximo.
Operaciones:
- Recorrido
- Inserción
- Eliminación
- Búsqueda
Una lista doble, ó doblemente ligada es una colección de nodos en la cual cada nodo tiene dos
punteros, uno de ellos apuntando a su predecesor (li) y otro a su sucesor (ld). Por medio de estos
punteros se podrá avanzar o retroceder a través de la lista, según se tomen las direcciones de uno
u otro puntero.
Listas dobles lineales. En este tipo de lista doble, tanto el puntero izquierdo del primer
nodo como el derecho del último nodo apuntan a NIL.
Listas dobles circulares. En este tipo de lista doble, el puntero izquierdo del primer nodo
apunta al último nodo de la lista, y el puntero derecho del último nodo apunta al primer
nodo de la lista.
Debido a que las listas dobles circulares son más eficientes, los algoritmos que en esta sección se
traten serán sobre listas dobles circulares.
En la figura siguiente se muestra un ejemplo de una lista doblemente ligada lineal que almacena
números:
En la figura siguiente se muestra un ejemplo de una lista doblemente ligada circular que almacena
números: