Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Una LDE (lista doblemente enlazada) es utilizada para almacenar los datos de los profesores como son RFC, nombre, materia y teléfono. A través de un menú:
- 1. Insertar
- 2. Eliminar
- 3. Desplegar
- 4. Salir
- Administrar los datos de los profesores de una Universidad.
- */
- tipos
- Profesor: registro {
- RFC: cadena
- nombre: cadena
- materia: cadena
- telefono: cadena
- anterior: numerico
- siguiente: numerico
- }
- var
- lista: vector [*] Profesor
- cabeza, ultimo, libre, n: numerico
- opcion, i, pos: numerico
- RFC, nombre, materia, telefono: cadena
- inicio
- cabeza = 0
- ultimo = 0
- libre = 1
- dim (lista, 100)
- // Inicializar la lista
- desde i=1 hasta 99 {
- lista[i].siguiente = i + 1
- lista[i].anterior = i - 1
- }
- lista[100].siguiente = 0
- repetir
- imprimir("\nMenú:")
- imprimir("\n1. Insertar")
- imprimir("\n2. Eliminar")
- imprimir("\n3. Desplegar")
- imprimir("\n4. Salir")
- imprimir("\nElija una opción: ")
- leer(opcion)
- eval
- {
- caso (opcion ==1)
- // Insertar
- si (libre == 0) {
- imprimir("\nLa lista está llena.")
- sino
- pos = libre
- libre = lista[libre].siguiente
- imprimir("\nIntroduce el RFC del profesor: ")
- leer(RFC)
- imprimir("\nIntroduce el nombre del profesor: ")
- leer(nombre)
- imprimir("\nIntroduce la materia del profesor: ")
- leer(materia)
- imprimir("\nIntroduce el teléfono del profesor: ")
- leer(telefono)
- lista[pos].RFC = RFC
- lista[pos].nombre = nombre
- lista[pos].materia = materia
- lista[pos].telefono = telefono
- lista[pos].siguiente = 0
- lista[pos].anterior = ultimo
- si (ultimo <> 0) {
- lista[ultimo].siguiente = pos
- }
- ultimo = pos
- si (cabeza == 0) {
- cabeza = pos
- }
- }
- //terminar()
- caso (opcion ==2)
- // Eliminar
- si (cabeza == 0) {
- imprimir("\nLa lista está vacía.")
- sino
- imprimir("\nIntroduce el RFC del profesor a eliminar: ")
- leer(RFC)
- pos = cabeza
- mientras (pos <> 0 and lista[pos].RFC <> RFC) {
- pos = lista[pos].siguiente
- }
- si (pos == 0) {
- imprimir("\nProfesor no encontrado.")
- sino
- si (lista[pos].anterior <> 0) {
- lista[lista[pos].anterior].siguiente = lista[pos].siguiente
- sino
- cabeza = lista[pos].siguiente
- }
- si (lista[pos].siguiente <> 0) {
- lista[lista[pos].siguiente].anterior = lista[pos].anterior
- sino
- ultimo = lista[pos].anterior
- }
- lista[pos].siguiente = libre
- libre = pos
- }
- }
- //terminar()
- caso (opcion ==3)
- // Desplegar
- si (cabeza == 0) {
- imprimir("\nLa lista está vacía.")
- sino
- imprimir("\nDatos de los profesores:")
- pos = cabeza
- mientras (pos <> 0) {
- imprimir("\nRFC: ", lista[pos].RFC, ", Nombre: ", lista[pos].nombre, ", Materia: ", lista[pos].materia, ", Teléfono: ", lista[pos].telefono)
- pos = lista[pos].siguiente
- }
- }
- terminar()
- caso (opcion ==4)
- imprimir("\nSaliendo del programa.")
- //terminar()
- sino
- imprimir("\nOpción no válida. Por favor, elija una opción válida.")
- //terminar()
- }
- hasta (opcion == 4)
- fin
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement