viernes, 8 de mayo de 2020

Simulación de las estructura de datos dinámicas



1. Consulte qué son las torres de Hanoi y exponga brevemente cuál de las estructuras dinámicas utilizará para simular su comportamiento.

Las Torres de Hanói es un rompecabezas o juego matemático inventado en 1883 por el matemático francés Édouard Lucas. ​ Este juego de mesa individual consiste en un número de discos perforados de radio creciente que se apilan insertándose en uno de los tres postes fijados a un tablero. El objetivo del juego es trasladar la pila a otro de los postes siguiendo ciertas reglas, como que no se puede colocar un disco más grande encima de un disco más pequeño. La fórmula para encontrar el número de movimientos necesarios para transferir n discos desde un poste a otro es: 2n – 1
·       Solo se puede mover un disco cada vez y para mover otro los demás tienen que estar en postes.
·       Un disco de mayor tamaño no puede estar sobre uno más pequeño que él mismo.
·       Solo se puede desplazar el disco que se encuentre arriba en cada poste.





En este caso se puede decir que este tipo de ejemplo es una representación de las estructuras de datos dinámicas tipo Pilas o stack, pues se cumplen los principios de apilar y desapilar para poder trasladar los discos de una base a otra, al igual que para organizarlos en la base estos deben estar clasificados por tamaño

2. Observe el comportamiento de la fila frente a la taquilla de un banco y exponga breve-mente cuál de las estructuras dinámicas utilizará para simular su comportamiento.

En este caso se puede decir que es un ejemplo de estructura de datos dinámicas tipo cola, pues como tal la gente es atendida en orden de llegada, el primero que llega es el primero en salir. Se puede decir que el primero en la cola es la cabeza y el ultimo la cola, a medida que son atendidos se van moviendo los elementos en la fila



3  3. Suponga que tiene dos fichas del juego de dominó debidamente conectadas así: el 2-3 con el 3-4 y necesita inserta las ficha 3-3 exponga brevemente cuál de las estructuras dinámicas utilizará para simular su comportamiento.

En este caso se puede decir que es una estructura de datos dinámica tipo Lista doblemente enlazada, se observa que se lleva una secuencia u orden y que se tiene una doble liga entre los elementos que permite recorrer el arreglo hacia adelante o hacia atrás. La inserción se debe hacer a la izquierda del nodo apuntado por la posición ofrecida a la función insertar. Esto implica que al contrario que en las listas simples, al insertar un nodo, el puntero utilizado sigue apuntando al mismo elemento al que apuntaba y no al nuevo elemento insertado. Si se desea, es posible modificar la función de forma que se pase un puntero a la posición de inserción para poder modificarla y hacer que apunte al nuevo elemento insertado




miércoles, 6 de mayo de 2020

Estructura de datos dinámicas




1.    ¿Cuál es la principal diferencia entre el uso de memoria en forma estática y el uso de memoria dinámica?
La diferencia que existe entre estos dos tipos de procesos es que en el caso de asignación de memoria de forma dinámica esta se reserva en tiempo de ejecución del programa. La memoria reservada de forma dinámica suele estar alojada en el heap o almacenamiento libre, y la memoria estática en el stack o pila (con excepción de los objetos de duración estática, que se verán más adelante, los cuales normalmente se colocan en una zona estática de datos). La pila generalmente es una zona muy limitada. El heap, en cambio, en principio podría estar limitado por la cantidad de memoria disponible durante la ejecución del programa y el máximo de memoria que el sistema operativo permita direccionar a un proceso. La pila puede crecer de forma dinámica, pero esto depende del sistema operativo. En cualquier caso, lo único que se puede asumir es que muy probablemente dispondremos de menor espacio en la pila que en el heap.
Una desventaja de la memoria dinámica es que es más difícil de manejar. La memoria estática tiene una duración fija, que se reserva y libera de forma automática. En contraste, la memoria dinámica se reserva de forma explícita y continúa existiendo hasta que sea liberada, generalmente por parte del programador.




2.    ¿Con qué otro nombre se conoce la estructura de datos pila?
Conocida también como Stack . Una pila (stack en inglés) es una lista ordenada o estructura de datos que permite almacenar y recuperar datos, siendo el modo de acceso a sus elementos de tipo LIFO (del inglés Last In, First Out, «último en entrar, primero en salir»). Esta estructura se aplica en multitud de supuestos en el área de informática debido a su simplicidad y capacidad de dar respuesta a numerosos procesos.
Para el manejo de los datos cuenta con dos operaciones básicas: apilar (push), que coloca un objeto en la pila, y su operación inversa, retirar (o desapilar, pop), que retira el último elemento apilado.




3.    ¿Qué diferencia existe entre una lista simple y una lista doblemente enlazada?
La diferencia que existe entre estos dos tipos de lista es que, como tal en la lista enlazada cada elemento apunta al siguiente excepto el último que no tiene sucesor y el valor del enlace es null, mientras que en la lista doblemente enlazada cada nodo contiene tres campos, dos para los llamados enlaces, que son referencias al nodo siguiente y al anterior en la secuencia de nodos, y otro más para el almacenamiento de la información (en este caso un entero). El doble enlace de los nodos permite recorrer la lista en cualquier dirección. Mientras que agregar o eliminar un nodo en una lista doblemente enlazada requiere cambiar más enlaces que en estas mismas operaciones en una lista enlazada simple, las operaciones son más simples porque no hay necesidad de mantener guardado el nodo anterior durante el recorrido

4.    ¿Cuál es la principal característica de una lista circular?
Una lista circular es una lista lineal en la que el último nodo a punta al primero. Las listas circulares evitan excepciones en las operaciones que se realicen sobre ellas. No existen casos especiales, cada nodo siempre tiene uno anterior y uno siguiente. En algunas listas circulares se añade un nodo especial de cabecera, de ese modo se evita la única excepción posible, la de que la lista esté vacía. A pesar de que las listas circulares simplifiquen las operaciones sobre ellas, también introducen algunas complicaciones. Por ejemplo, en un proceso de búsqueda, no es tan sencillo dar por terminada la búsqueda cuando el elemento buscado no existe. Por ese motivo se suele resaltar un nodo en particular, que no tiene por qué ser siempre el mismo. Cualquier nodo puede cumplir ese propósito, y puede variar durante la ejecución del programa.