estructuras_datos

20
ESTRUCTURAS DE DATOS IPC 1

Upload: mabybry

Post on 14-Dec-2015

6 views

Category:

Documents


0 download

DESCRIPTION

estructura de datos java

TRANSCRIPT

Page 1: Estructuras_Datos

ESTRUCTURAS DE

DATOS

IPC 1

Page 2: Estructuras_Datos

ESTRUCTURAS

DINÁMICAS

Page 3: Estructuras_Datos

Definicion Son las estructuras que 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 una forma precisa.

Es decir seba asignando memoria en tipo de ejecución

según se va necesitando.

Page 4: Estructuras_Datos

Tipos de Estructuras dinámicas

• Estas se pueden clasificar en 2 tipos:

Page 5: Estructuras_Datos

Conceptos claves Apuntadores/puntero :Las variables de tipo puntero son las

que nos permiten referenciar datos dinámicos.

• Un apuntador es una variable que contiene la dirección en

memoria de otra variable.

• En Java los apuntadores se manejan como referencias.

Page 6: Estructuras_Datos

Conceptos claves • Clase autoreferenciada: Una clase con al menos un campo cuyo

referencia es el nombre de la clase:

• Nodo: un objeto creado desde una clase autoreferenciada.

• Campo de enlace: un campo cuyo tipo de referencia es el nombre

de la clase.

• Enlace: la referencia a un campo de enlace.

Page 7: Estructuras_Datos

TIPOS LINEALES

Page 8: Estructuras_Datos

Pila (Stack)

Una pila es un conjunto ordenado de elementos. Estos

elementos solamente se pueden acceder por un lugar

único o extremo de la pila.

Las pilas utilizan la política de acceso tipo LIFO. (Last In

First Out).

Page 9: Estructuras_Datos

Operaciones en una pila

• Poner (Push) : esta operación permite añadir un

elemento a la pila.

• Sacar(Pop) : esta operación permite sacar un elemento

de la pila.

• Cima(Top o peek): esta operación permite obtener el

elemento en la cima de la pila.

Page 10: Estructuras_Datos

Cola (Queue)

Una cola es una estructura de datos que permite el

almacenamiento de elementos en una lista y que permite

acceder a los mismos por ambos extremos de la lista.

Las colas utilizan la política de acceso tipo FIFO. (First In

First Out).

Page 11: Estructuras_Datos

• Encolar/Insertar: esta operación permite ingresar un

elemento en el extremo final de la cola.

• Desencolar/Extraer: esta operación permite sacar un

elemento en el extremo frontal de la cola.

• Frente/ver primero: esta operación permite consultar el

elemento en el frente de la cola.

Operaciones de una cola

Page 12: Estructuras_Datos

• Una lista en su sentido amplio, es un conjunto de

elementos del mismo tipo donde cada elemento tiene un

único predecesor (excepto el primero) y un único sucesor

(excepto el último) y cuyo número de elementos es

variable.

Tipos de Lista:

1. Listas simples enlazadas

2. Listas doblemente enlazadas

3. Listas circulares simples enlazadas

4. Listas circulares doblemente enlazadas

5. Listas ortogonalmente enlazadas(Matriz ortogonal)

Lista

Page 13: Estructuras_Datos

Operaciones en Listas

• Insertar: inserta un elemento final de la lista

• Insertar en posición: inserta un elemento en una

posición especificada, si existe.

• Buscar: busca un elemento dentro de la lista.

• Obtener: obtiene un elemento en la posición

especificada, si existe

• Borrar/eliminar: borra un elemento dentro de la lista.

Page 14: Estructuras_Datos

Listas simples enlazadas

• Es una lista enlazada de nodos, donde cada nodo tiene

un único campo de enlace. Una variable referencia

contiene una referencia al primer nodo, cada nodo

(excepto el último) enlaza con el nodo siguiente, y el

enlace del último nodo contiene null para indicar el final

de la lista.

Page 15: Estructuras_Datos

Listas doblemente enlazadas

• Una lista doblemente enlazada es una lista lineal en la

que cada nodo tiene dos enlaces, uno al nodo siguiente,

y otro al anterior.

• Las listas doblemente enlazadas no necesitan un nodo

especial para acceder a ellas, pueden recorrerse en

ambos sentidos a partir de cualquier nodo, esto es

porque a partir de cualquier nodo, siempre es posible

alcanzar cualquier nodo de la lista, hasta que se llega a

uno de los extremos.

Page 16: Estructuras_Datos

Listas circulares

• La lista circular es una especie de lista enlazada simple o doblemente enlazada, pero que posee una característica adicional para el desplazamiento dentro de la lista, “ésta no tiene fin”

• Para que la lista sea sin fin, el puntero siguiente del último elemento apuntará hacia el 1er elemento de la lista en lugar de apuntar al valor NULL, como hemos visto en el caso de listas enlazadas simples o doblemente enlazadas

• En las listas circulares, nunca se llega a una posición en la que ya no sea posible desplazarse. Cuando se llegue al último elemento, el desplazamiento volverá a comenzar desde el primer elemento.

Page 17: Estructuras_Datos

Ejemplo

• Lista circular simple enlazada

• Lista circular simple enlazada

Page 18: Estructuras_Datos

Matriz Ortogonal

• una matriz ortogonal es una estructura de datos utilizada

para implementa una tabla con memoria dinámica. Y la

cual puede buscar o recorrer por uno de los dos aspectos

de orden(Filas/Columnas).

• una matriz ortogonal tiene cuatro apuntadores "arriba"

"abajo" "Derecha" "Izquierda".

Page 19: Estructuras_Datos

Ejemplo

• Gráficamente una matriz ortogonal se miraría de la

siguiente forma:

Page 20: Estructuras_Datos

Listas

• Una lista es una ordenada colección (a veces llamada una secuencia). Las listas pueden contener elementos duplicados.

• List<E>: Elementos en una secuencia particular que mantienen un orden y permite duplicados. La lista puede ser recorrida en ambas direcciones con un ListIterator. Hay 3 tipos de constructores: 1. ArrayList<E>: Su ventaja es que el acceso a un elemento en particular es

ínfimo. Su desventaja es que para eliminar un elemento, se ha de mover toda la lista para eliminar ese “hueco”.

2. Vector<E>: Es igual que ArrayList, pero sincronizado. Es decir, que si usamos varios hilos, no tendremos de qué preocuparnos hasta cierto punto.

3. LinkedList<E>: En esta, los elementos están conectados con el anterior y el posterior. La ventaja es que es fácil mover/eliminar elementos de la lista, simplemente moviendo/eliminando sus referencias hacia otros elementos. La desventaja es que para usar el elemento N de la lista, debemos realizar N movimientos a través de la lista.

.