Estructuras no-lineales

5,307 views

Published on

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

1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
5,307
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
153
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Estructuras no-lineales

  1. 1. PresentaciónEstructuras de Datos No Lineales Mauricio Paletta INGENIERÍA EN INFORMÁTICA Programación II Coordinación General de PregradoUNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA Programación II
  2. 2. DefiniciónSon aquellas que ocupan bloques dememoria no continuos / lineales. Para lidiarcon el problema de la fragmentación y, sobretodo del crecimiento dinámico.Los bloques deben estar enlazados unos conotros para poder “navegar” por la estructura,es decir, tener acceso a otro(s) dato(s) apartir del actual. Programación II
  3. 3. DefiniciónLas ventajas de las estructuras lineales sondesventajas en las estructuras no lineales yviceversa.Para los enlaces se requiere utilizardirecciones de memoria / apuntadores.Dos tipos de estructuras: 1) Listas enlazadas: simples, dobles. 2) Árboles: binarios, genéricos, grafos. Programación II
  4. 4. Listas enlazadasEstructura formada por nodos que se enlazanentre sí partiendo de un nodo inicial cuyareferencia lleva el nombre de cabecera y unaposible referencia al nodo final o cola.Si cada nodo apunta sólo a su siguiente sedice que la lista enlazada es simple. Sitambién se incluye una referencia al nodoanterior, entonces la lista enlazada es doble. Programación II
  5. 5. Listas enlazadasNOTA: 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. Programación II
  6. 6. Listas enlazadas Data Data … Data NULO Cabecera ColaNULO Data Data … Data NULOCabecera Cola Programación II
  7. 7. Listas enlazadas Programación II
  8. 8. Listas enlazadas Programación II
  9. 9. Listas enlazadas Programación II
  10. 10. Listas enlazadas Programación II
  11. 11. Listas enlazadas Programación II
  12. 12. Listas enlazadas Programación II
  13. 13. Conjunto Programación II
  14. 14. GrafoEstructura formada por un conjunto de nodoso vértices y un conjunto de aristas o lados.A ser usados por cualquier problema dondese observa un conjunto de objetos yconexiones entre ellos: mapa de rutas detransporte, red de computadoras,organigrama, diagrama de actividades/prelaciones, etc. Programación II
  15. 15. Grafo Programación II
  16. 16. Grafo Programación II
  17. 17. Grafo Programación II
  18. 18. ÁrbolesTipo particular de grafo acíclico (sin ciclos)formada por nodos en la cual cada uno deellos puede apuntar a uno o varios otrosnodos.De forma recursiva, cada nodo puede apuntara otro árbol (sub-árbol).Entre los nodos se establece una relación deascendencia / descendencia. Programación II
  19. 19. ÁrbolesNodo padre: nodo que contiene un apuntadora otros nodos.Nodo hijo: nodo que es apuntado por otronodo.Nodo raíz: sólo se comporta como padre; élmismo no tiene padre (no es hijo de nadie).Nodo hoja: sólo se comporta como hijo; élmismo no tiene hijos (no es padre de nadie). Programación II
  20. 20. Árboles Raíz Padre / ascendente de G Hijos /descendiente s de B Subárbol Hojas Programación II
  21. 21. ÁrbolesOrden: número potencial de hijos que puedetener cada nodo.Grado: número de hijos que tiene el nodo conmás hijos en el árbol.Nivel de un nodo: nivel de descendencia odistancia a la raíz. El nivel de la raíz es 0.Altura: nivel del nodo de mayor nivel. Programación II
  22. 22. ÁrbolesTres 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. Programación II
  23. 23. Árbol binarioTipo particular de árbol de orden 2 (todo nodotiene un máximo de dos hijos: izquierdo yderecho). Programación II
  24. 24. Árbol binario Programación II
  25. 25. Árbol binario Programación II
  26. 26. Árbol binarioUn ejemplo muy común es la representaciónde expresiones. Preorden: *+12-34 Postorden: 12+34-* Inorden: 1+2*3-4 Programación II
  27. 27. Árbol binario Programación II
  28. 28. Árbol binarioOtro ejemplo es el árbol binario de búsqueda(para nodos con datos enteros o quecontenga una clave que pueda sercomparada): para cada nodo, su valorsiempre es mayor que los valores de losnodos de su descendencia del subárbolizquierdo y menor que los valores de losnodos de su descendencia del subárbolderecho. Programación II
  29. 29. Árbol binarioBuscar 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. Programación II
  30. 30. Árbol binarioAgregar 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. Programación II
  31. 31. Árbol binarioSuprimir 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. Programación II
  32. 32. Árbol binario Programación II
  33. 33. Árbol binario Programación II

×