estructuras no-lineales

33
Programación II Mauricio Paletta Coordinación General de Pregrado UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA INGENIERÍA EN INFORMÁTICA Programación II Estructuras de Datos No Lineales Presentación

Upload: karlalopezbello

Post on 18-Nov-2014

2.979 views

Category:

Documents


2 download

DESCRIPTION

Estructuras no-lineales | Lenguaje C++ | Profesor Mauricio Paletta

TRANSCRIPT

Page 1: Estructuras no-lineales

Programación II

Mauricio Paletta

Coordinación General de Pregrado

UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA

INGENIERÍA EN INFORMÁTICA

Programación II

Estructuras de Datos No Lineales

Presentación

Page 2: Estructuras no-lineales

Programación II

Definición

Son aquellas que ocupan bloques de

memoria no continuos / lineales. Para lidiar

con el problema de la fragmentación y, sobre

todo del crecimiento dinámico.

Los bloques deben estar enlazados unos con

otros para poder “navegar” por la estructura,

es decir, tener acceso a otro(s) dato(s) a

partir del actual.

Page 3: Estructuras no-lineales

Programación II

Definición

Las ventajas de las estructuras lineales son

desventajas en las estructuras no lineales y

viceversa.

Para los enlaces se requiere utilizar

direcciones de memoria / apuntadores.

Dos tipos de estructuras:

1) Listas enlazadas: simples, dobles.

2) Árboles: binarios, genéricos, grafos.

Page 4: Estructuras no-lineales

Programación II

Listas enlazadas

Estructura formada por nodos que se enlazan

entre sí partiendo de un nodo inicial cuya

referencia lleva el nombre de cabecera y una

posible referencia al nodo final o cola.

Si cada nodo apunta sólo a su siguiente se

dice que la lista enlazada es simple. Si

también se incluye una referencia al nodo

anterior, entonces la lista enlazada es doble.

Page 5: Estructuras no-lineales

Programación II

Listas enlazadas

NOTA: La mejor forma de entender

estructuras enlazadas es manejar el

diagrama de bloques y sus respectivos

enlaces.

Perder o no manejar bien un enlace

provoca la pérdida de información a partir

del bloque correspondiente.

Page 6: Estructuras no-lineales

Programación II

Listas enlazadas

Data Data Data…

Cabecera

NULO

Cola

Data Data DataNULO

NULO

CabeceraCola

Page 7: Estructuras no-lineales

Programación II

Listas enlazadas

Page 8: Estructuras no-lineales

Programación II

Listas enlazadas

Page 9: Estructuras no-lineales

Programación II

Listas enlazadas

Page 10: Estructuras no-lineales

Programación II

Listas enlazadas

Page 11: Estructuras no-lineales

Programación II

Listas enlazadas

Page 12: Estructuras no-lineales

Programación II

Listas enlazadas

Page 13: Estructuras no-lineales

Programación II

Conjunto

Page 14: Estructuras no-lineales

Programación II

Grafo

Estructura formada por un conjunto de nodos

o vértices y un conjunto de aristas o lados.

A ser usados por cualquier problema donde

se observa un conjunto de objetos y

conexiones entre ellos: mapa de rutas de

transporte, red de computadoras,

organigrama, diagrama de actividades

/prelaciones, etc.

Page 15: Estructuras no-lineales

Programación II

Grafo

Page 16: Estructuras no-lineales

Programación II

Grafo

Page 17: Estructuras no-lineales

Programación II

Grafo

Page 18: Estructuras no-lineales

Programación II

Árboles

Tipo particular de grafo acíclico (sin ciclos)

formada por nodos en la cual cada uno de

ellos puede apuntar a uno o varios otros

nodos.

De forma recursiva, cada nodo puede apuntar

a otro árbol (sub-árbol).

Entre los nodos se establece una relación de

ascendencia / descendencia.

Page 19: Estructuras no-lineales

Programación II

Árboles

Nodo padre: nodo que contiene un apuntador

a otros nodos.

Nodo hijo: nodo que es apuntado por otro

nodo.

Nodo raíz: sólo se comporta como padre; él

mismo no tiene padre (no es hijo de nadie).

Nodo hoja: sólo se comporta como hijo; él

mismo no tiene hijos (no es padre de nadie).

Page 20: Estructuras no-lineales

Programación II

Árboles

Raíz

Hojas

Subárbol

Hijos /

descendiente

s de B

Padre /

ascendente

de G

Page 21: Estructuras no-lineales

Programación II

Árboles

Orden: número potencial de hijos que puede

tener cada nodo.

Grado: número de hijos que tiene el nodo con

más hijos en el árbol.

Nivel de un nodo: nivel de descendencia o

distancia a la raíz. El nivel de la raíz es 0.

Altura: nivel del nodo de mayor nivel.

Page 22: Estructuras no-lineales

Programación II

Árboles

Tres tipos de recorridos:

1) Preorden: primero raíz y luego hijos

empezando por hijo izquierdo.

2) Postorden: primero hijos empezando por hijo

izquierdo y luego raíz.

3) Inorden: primero hijo izquierdo, luego raíz y

finalmente el resto de los hijos.

Page 23: Estructuras no-lineales

Programación II

Árbol binario

Tipo particular de árbol de orden 2 (todo nodo

tiene un máximo de dos hijos: izquierdo y

derecho).

Page 24: Estructuras no-lineales

Programación II

Árbol binario

Page 25: Estructuras no-lineales

Programación II

Árbol binario

Page 26: Estructuras no-lineales

Programación II

Árbol binario

Un ejemplo muy común es la representación

de expresiones.

Preorden:

* + 1 2 - 3 4

Postorden:

1 2 + 3 4 - *

Inorden:

1 + 2 * 3 - 4

Page 27: Estructuras no-lineales

Programación II

Árbol binario

Page 28: Estructuras no-lineales

Programación II

Árbol binario

Otro ejemplo es el árbol binario de búsqueda

(para nodos con datos enteros o que

contenga una clave que pueda ser

comparada): para cada nodo, su valor

siempre es mayor que los valores de los

nodos de su descendencia del subárbol

izquierdo y menor que los valores de los

nodos de su descendencia del subárbol

derecho.

Page 29: Estructuras no-lineales

Programación II

Árbol binario

Buscar un elemento:

• Si el árbol está vacío el elemento no está.

• Si el elemento coincide con el de la raíz listo.

• Si el elemento es menor que el de la raíz se busca en

el subárbol izquierdo, caso contrario se busca en el

subárbol derecho.

Page 30: Estructuras no-lineales

Programación II

Árbol binario

Agregar un elemento:

• Si el elemento está en el árbol no se agrega.

• Si el elemento no está, éste se inserta a continuación

del último nodo visitado en la búsqueda, respetando la

regla de construcción del árbol, a la izquierda o

derecha del nodo dependiendo si el valor a agregar es

menor o mayor respectivamente que el del nodo.

Page 31: Estructuras no-lineales

Programación II

Árbol binario

Suprimir un elemento:

• Si el elemento no está en el árbol no se puede

suprimir.

• Si el elemento está y es un nodo hoja se borra

directamente cuidando de que la referencia del nodo

padre correspondiente se anule.

• Si no es un nodo hoja, hay que buscar el nodo más a

la izquierda del subárbol derecho o el más a la

derecha del subárbol izquierdo e intercambiar los

valores con el nodo (eliminación lógica).

• El nodo intercambiado se elimina físicamente.

Page 32: Estructuras no-lineales

Programación II

Árbol binario

Page 33: Estructuras no-lineales

Programación II

Árbol binario