0% encontró este documento útil (0 votos)
16 vistas4 páginas

Practica 2 Hanoi

El documento presenta una práctica sobre la resolución del problema de las Torres de Hanoi utilizando estructuras de datos en C. Incluye la implementación de funciones para manejar pilas y mover discos entre varillas. Se abordan aspectos como requerimientos funcionales y no funcionales, así como resultados y conclusiones de la práctica.

Cargado por

francisco orozco
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
16 vistas4 páginas

Practica 2 Hanoi

El documento presenta una práctica sobre la resolución del problema de las Torres de Hanoi utilizando estructuras de datos en C. Incluye la implementación de funciones para manejar pilas y mover discos entre varillas. Se abordan aspectos como requerimientos funcionales y no funcionales, así como resultados y conclusiones de la práctica.

Cargado por

francisco orozco
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

|

Unidad Profesional Interdisciplinaria


en Ingeniería y Tecnologías
Avanzadas

Alumno
Orozco Rojas Francisco

Unidad de Aprendizaje
Estructura de Datos

Profesor
M. en C. Niels Henrik Navarrete Manzanilla

Práctica 2
Hanoi

Ciudad de México; 19 de septiembre de 2023


ÍNDICE
CONTENIDO
INTRODUCCIÓN 3
DESARROLLO 3
DESCRIPCIÓN 3
ANÁLISIS 3
REQUERIMIENTOS FUNCIONALES 3
REQUERIMIENTOS NO FUNCIONALES 3
DIAGRAMAS 3
CÓDIGO 3
RESULTADOS 3
CONCLUSIONES 3
REFERENCIAS BIBLIOGRÁFICAS 4

Ciudad de México; 19 de septiembre de 2023


INTRODUCCIÓN

DESARROLLO

Código
// Función para eliminar un int main() {
#include <stdio.h>
elemento de la pila int n = 5; // Número de discos
#include <stdlib.h>
int elimele(Pila* pil) { Pila* origen = crearPila(n);
if (pvacia(pil)) { Pila* aux = crearPila(n);
// Definición de la estructura de la pila
typedef struct { printf("Error: la pila está Pila* destino = crearPila(n);
int *arreglo; vacía\n");
int cima; return -1; // Insertar los discos en la varilla
int elemn; } A
} Pila; return pil->arreglo[pil->cima--]; for (int i = n; i >= 1; i--) {
} insertarelem(origen, i);
// Función para crear una pila }
Pila* crearPila(int n) {
// Función para mover un disco de
Pila* pil;
una varilla a otra hanoi(n, origen, aux, destino);
pil = (Pila*)
malloc(sizeof(Pila)); void mover(char desde, char hacia,
pil->elemn = n; int disco) { return 0;
pil->cima = -1; printf("Mover disco %d de la }
pil->arreglo = (int*) malloc(pil- varilla %c a la varilla %c\n", disco,
>elemn * sizeof(int)); desde, hacia);
return pil; }
}
// Función recursiva para resolver
// Función para verificar si la pila está
las Torres de Hanoi
vacía
int pvacia(Pila* pil) { void hanoi(int n, Pila* origen, Pila*
return pil->cima == -1; aux, Pila* destino) {
} if (n == 1) {
int disco;
// Función para verificar si la pila está disco =
llena elimele(origen);
int pllena(Pila* pil) { insertarelem(destino, disco);
return pil->cima == pil->elemn - 1; mover('A', 'C', disco);
}
return;
// Función para insertar un
}
elemento en la pila
hanoi(n-1, origen, destino, aux);
void insertarelem(Pila* pil, int item)
int disco;
{
disco = elimele(origen);
if (pllena(pil)) {
insertarelem(destino, disco);
printf("Error: la pila está
mover('A', 'C', disco);
llena\n");
hanoi(n-1, aux, origen, destino);
return;
}
}
pil->arreglo[++pil->cima] = item; Ciudad de México; 19 de septiembre de 2023
}
Resultado

CONCLUSIONES

REFERENCIAS BIBLIOGRÁFICAS

Ciudad de México; 19 de septiembre de 2023

También podría gustarte