Estructuras de Datos

21
Estructuras de Datos José Pablo Bahamonde Pinilla

description

Consiste en un análisis básico de las diferentes estructuras de datos existentes, ademas de un ejemplo de código en Java

Transcript of Estructuras de Datos

Estructuras de Datos

Jos Pablo Bahamonde PinillaIngeniera en computacin Facultad de ingeniera Universidad Central de Chile

ndice

rboles3Ejemplo de rbol en Java5Pilas7Ejemplo Pila en Java8Colas9Ejemplo de una cola en Java10Listas enlazadas11Lista enlazada simple11Lista enlazada doble12Lista enlazada circular12Ejemplo lista Java13Grafos14Ejemplo de Grafo en java15Tabla Hash16Ejemplo Tabla Hash Java17

rboles

Unrboles unaestructura de datosampliamente usada que imita la forma de un rbol (un conjunto de nodos conectados). Unnodoes la unidad sobre la que se construye el rbol y puede tener cero o ms nodos hijos conectados a l. Se dice que un nodoAespadrede un nodoBsi existe un enlace desdeAhastaB(en ese caso, tambin decimos queBes hijo deA). Slo puede haber un nico nodo sin padres, que llamaremosraz. Un nodo que no tiene hijos se conoce comohoja. Los dems nodos (tienen padre y uno o varios hijos) se les conoce comorama. Representacin grfica de un rbol:

rboles BinariosConsiste en una estructura de datos en la cual cada nodo siempre tiene un hijo izquierdo y un hijo derecho, esta restriccin es fundamental para la aplicacin de esta estructura en la jerarquizacin de la informacin. Si alguno de los hijos tiene referencia a Null (no almacena informacin), es llamado un nodo externo. Por el contrario si almacena datos de algn tipo es llamado un nodo interno.La mayor parte de los arboles binarios son utilizados para el orden y bsqueda de datos almacenados, tambin llamados arboles binarios de bsqueda, estos tienen adicionalmente dos restricciones para los datos almacenados en los nodos que conforman la estructura:Un rbol binario no vaco, de raz R, es un rbol binario de bsqueda si: En caso de tener subrbol izquierdo, la raz R debe ser mayor que el valor mximo almacenado en el subrbol izquierdo, y que el subrbol izquierdo sea un rbol binario de bsqueda. En caso de tener subrbol derecho, la raz R debe ser menor que el valor mnimo almacenado en el subrbol derecho, y que el subrbol derecho sea un rbol binario de bsqueda.

Ejemplo de rbol en Java

PilasEs una lista ordenada oestructura de datosen la cual el acceso est restringido al elemento ms recientemente insertado. Esta estructura se aplica en multitud de ocasiones en el rea deinformticadebido a su simplicidad y ordenacin implcita de la propia estructura.Para el manejo de los datos se cuenta con dos operaciones bsicas:apilar, que coloca un objeto en la pila, y su operacin inversa,desapilar, que retira el ltimo elemento apilado.En cada momento slo se tiene acceso a la parte superior de la pila, es decir, al ltimo objeto apilado. La operacindesapilar permite la obtencin de este elemento, que es retirado de la pila permitiendo el acceso al siguiente elemento que pasa a ser la nueva cima de la pila.Laspilassuelen emplearse en los siguientes contextos: Evaluacin de expresiones ennotacin postfija(notacin polaca inversa). Reconocedores sintcticos delenguajes independientes del contexto Implementacin derecursividad.

Ejemplo Pila en Java

Colas

Es unaestructuralineal dedatos. Una cola es ungrupoordenado de elementos homogneos en el que los nuevos elementos se aaden por un extremo (el final) y se quitan por el otro extremo (el frente). En las colas el acceso est restringido al elemento ms antiguo y al elemento ms reciente ingresado.Este tipo de estructuras son muy utilizadas y tiles al momento de priorizar el procesamiento de la informacin o la ejecucin de una tarea en los sistemas computacionales.Representacin grfica de una cola:

Operaciones bsicas de una cola: Crear: se crea la cola vaca. Encolar: (aadir, entrar, insertar): se aade un elemento a la cola. Se aade al final de esta. Desencolar: (sacar, salir, eliminar): se elimina el elemento frontal de la cola, es decir, el primer elemento que entr. Frente: (consultar, front): se devuelve el elemento frontal de la cola, es decir, el primer elemento que entr.

Ejemplo de una cola en Java

Listas enlazadas

Consiste en una secuencia denodos, en los que se guardan campos de datos arbitrarios y una o dos referencias, enlaces opunterosal nodo anterior o posterior. Las listas enlazadas permiten inserciones y eliminacin de nodos en cualquier punto de la lista en tiempo constante (suponiendo que dicho punto est previamente identificado o localizado), pero no permiten unacceso aleatorio. Existen diferentes tipos de listas enlazadas: listas enlazadas simples, listas doblemente enlazadas, listas enlazadas circulares y listas enlazadas doblemente circulares.

Lista enlazada simple

La lista enlazada bsica es lalista enlazada simplela cual tiene un enlace por nodo. Este enlace apunta al siguiente nodo (o indica que tiene la direccin en memoria del siguiente nodo) en la lista, o al valorNULLo a la lista vaca, si es el ltimo nodo.Representacin grfica de una lista enlazada simple:

Lista enlazada doble

Un tipo de lista enlazada ms sofisticado es lalista doblemente enlazadaolista enlazadas de dos vas. Cada nodo tiene dos enlaces: uno apunta al nodo anterior, o apunta al valor NULLsi es el primer nodo; y otro que apunta al nodo siguiente, o apunta al valorNULLsi es el ltimo nodo.

Representacin grafica de una lista enlazada doble:

Lista enlazada circular

En una lista enlazada circular, el primer y el ltimo nodo estn unidos juntos. Esto se puede hacer tanto para listas enlazadas simples como para las doblemente enlazadas. Para recorrer una lista enlazada circular podemos empezar por cualquier nodo y seguir la lista en cualquier direccin hasta que se regrese hasta el nodo original. Desde otro punto de vista, las listas enlazadas circulares pueden ser vistas como listas sin comienzo ni fin. Este tipo de listas es el ms usado para dirigir buffers para ingerir datos, y para visitar todos los nodos de una lista a partir de uno dado.Representacin grfica de una lista circular doblemente enlazada:

Ejemplo lista Java

Grafos

Corresponde a un tipo abstracto de datos, el cual est formado por nodos (vrtices) y arcos (aristas) que establecen relaciones entre los nodos. Cada arco se especifica por un par de vrtices o nodos.UngrafoG=(V,E) consiste en un conjunto V denodos(vrtices) y un conjunto E dearistas(arcos). Cada arista es un par (v,w), siendo v y w un par de nodos pertenecientes al conjunto V de nodos. Podemos distinguir entre grafos dirigidos y no dirigidos. En ungrafo dirigidolos pares (v,w) estn ordenados, traducindose la arista en una flecha que va desde el nodoval nodow.

Caractersticas: Al nmero de nodos del grafo se le llama orden del grafo. Un grafo nulo es un grafo de orden 0 (cero). Dos nodos son adyacentes si hay un arco que los une. En un grafo dirigido, si A es adyacente de B, no necesariamente B es adyacente de A Camino es una secuencia de uno o ms arcos que conectan dos nodos. Un grafo se denomina conectado cuando existe siempre un camino que une dos nodos cualesquiera y desconectado en caso contrario. Un grafo es completo cuando cada nodo est conectado con todos y cada uno de los nodos restantes. El camino de un nodo as mismo se llama ciclo. Un grafo sin ciclos es un rbol. Un grafo de N vrtices o nodos es un rbol si cumple las siguientes condiciones a) Tiene N-1 arcosb) Existe una trayectoria entre cada par de nodos. c) Esta mnimamente conectado.

Ejemplo de Grafo en java

Tabla Hash

Es unaestructura de datosque asociallavesoclavesconvalores. La operacin principal que soporta de manera eficiente es labsqueda: permite el acceso a los elementos almacenados a partir de una clave generada. Funciona transformando la clave con unafuncin hashen unhash, un nmero que identifica la posicin donde la tabla hash localiza el valor deseado.Representacin grfica bsica de una tabla hash:

La estructura de las tablas hash es lo que les confiere su gran potencial, ya que hace de ellas unas estructuras extremadamente eficientes a la hora de recuperar informacin almacenada. El tiempo medio de recuperacin de informacin es constante, es decir, no depende del tamao de la tabla ni del nmero de elementos almacenados en la misma.

Ejemplo Tabla Hash Java

Este ejemplo solo es una interfaz que representa las funciones bsicas de una tabla hash.