Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Practica 62
- Los nombres de los profesores de una escuela son almacenados alfabéticamente
- en una estructura de árbol. Mostrar los nombres alfabéticamente.
- */
- tipos
- Profesor: registro {
- nombre: cadena
- izquierdo: numerico
- derecho: numerico
- }
- var
- arbol: vector [100] Profesor
- raiz, libre, temp, actual, padre, i: numerico
- opcion: numerico
- nombre: cadena
- encontrado: logico
- inicio
- cls()
- raiz = 0
- libre = 1
- // Inicializar la lista para el manejo de nodos libres
- desde i=1 hasta 99 {
- arbol[i].izquierdo = i + 1
- }
- arbol[100].izquierdo = 0
- repetir
- imprimir("\nMenú:")
- imprimir("\n1. Insertar Profesor")
- imprimir("\n2. Mostrar Profesores en orden alfabético")
- imprimir("\n3. Salir")
- imprimir("\nElija una opción: ")
- leer(opcion)
- eval {
- caso (opcion ==1)
- // Insertar Profesor
- si (libre == 0) {
- imprimir("\nEl árbol está lleno.")
- sino
- temp = libre
- libre = arbol[libre].izquierdo
- imprimir("\nIntroduce el nombre del profesor: ")
- leer(nombre)
- arbol[temp].nombre = nombre
- arbol[temp].izquierdo = 0
- arbol[temp].derecho = 0
- si (raiz == 0) {
- raiz = temp
- sino
- actual = raiz
- encontrado = FALSE // Variable booleana para controlar el bucle
- repetir
- padre = actual
- si (nombre < arbol[actual].nombre) {
- actual = arbol[actual].izquierdo
- si (actual == 0) {
- arbol[padre].izquierdo = temp
- encontrado = TRUE // Se ha encontrado el lugar de inserción
- }
- sino
- actual = arbol[actual].derecho
- si (actual == 0) {
- arbol[padre].derecho = temp
- encontrado = TRUE // Se ha encontrado el lugar de inserción
- }
- }
- hasta (encontrado) // El bucle se repetirá hasta que se encuentre un lugar de inserción
- }
- }
- //romper
- caso (opcion ==2)
- // Mostrar Profesores en orden alfabético
- imprimir("\nProfesores en orden alfabético:")
- mostrar_en_orden(raiz)
- //romper
- caso (opcion ==3)
- imprimir("\nSaliendo del programa.")
- //romper
- sino
- imprimir("\nOpción no válida. Por favor, elija una opción válida.")
- //romper
- }
- hasta (opcion == 3)
- fin
- subrutina mostrar_en_orden(nodo: numerico)
- inicio
- si (nodo <> 0) {
- mostrar_en_orden(arbol[nodo].izquierdo)
- imprimir("\n ",arbol[nodo].nombre)
- mostrar_en_orden(arbol[nodo].derecho)
- }
- fin
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement