Está en la página 1de 4

Programación

Grado en Ingeniería Matemática


e Inteligencia Artificial

2021/2022

Ejercicios de repaso

Ficha 4

Ejercicio 1
Las listas enlazadas son una de las estructuras de datos fundamentales. Consiste en una
secuencia de nodos, en los que se guardan campos de datos arbitrarios y una (simples) o dos
(dobles) referencias, enlaces o punteros al nodo anterior o posterior. El principal beneficio de
las listas enlazadas respecto a los vectores (list) convencionales es que el orden de los
elementos enlazados puede ser diferente al orden de almacenamiento en la memoria o el
disco.

Desarrollar un programa que permita identificar si en una lista enlazada existe un ciclo que
impide que la lista finalice como se puede observar en la siguiente imagen.
Ayuda:

Para el desarrollo de este programa que ofrece una librería en Python denominada
nodo_lista.py que ofrece un sistema de generación de listas circulares. Además, se ofrecen
tres ejemplos denominados:

• Lista_con_ciclos_1
• Lista_con_ciclos_2
• Lista_sin_ciclos

Las listas permiten navegar y acceder a la información mediante las siguientes funciones: (1)
siguiente que permite obtener el siguiente nodo de la lista; y (2) valor que permite acceder al
valor almacenado en el nodo.

Restricciones:

A continuación, se describen las diferentes restricciones que se deben aplicar a la hora de


resolver el problema.

• No se pueden utilizar las sentencias break, continue y pass.

Ejercicio 2
Los árboles binarios (ejemplo mostrado en la siguiente imagen) son estructuras de datos que
permiten almacenar información mediante nodos, donde cada nodo puede tener únicamente
un hijo izquierdo y un hijo derecho como máximo.
Dependiente de su posición en el árbol pueden ser de tres tipos:

• Nodo raíz: Es un nodo único que representa el nodo inicial del árbol.
• Nodos intermedios: Son nodos intermedios que pueden tener uno o dos nodos hijos.
• Nodos hojas (terminales): Son nodos que no tienen nodos hijos.

Desarrollar un programa que almacene un árbol binario mediante la utilización de un único


vector (list) permitiendo navegar de manera similar a como lo permite un árbol.

Ayuda:

Para el desarrollo de este programa se ofrecen varios ficheros de ejemplos, denominado


ejemplo_ejercicio_2_1.txt (describe el árbol mostrado en la imagen), de texto q define la
información del árbol, donde la primera línea representa la profundidad del árbol (número
de niveles) y el resto de las líneas especifican la información de un nodo compuesto por tres
valores separados por un espacio:

• Primer valor representa el valor que almacena el nodo.


• Segundo valor representa al padre del nodo. En caso de que contenga un R significa
que el nodo Raíz.
• Tercer valor representa el parentesco donde: 1 si el nodo es el hijo izquierdo; 2 si el
nodo es el hijo derecho; y R si el nodo es el nodo Raíz.
Restricciones:

A continuación, se describen las diferentes restricciones que se deben aplicar a la hora de


resolver el problema.

• Sólo se puede utilizar un único vector para la resolución del problema.


• No se pueden utilizar las sentencias break, continue y pass.

Ejercicio 3
Los palíndromos son palabras o frases que se lee igual en un sentido que en otro, como, por
ejemplo: Ana, Anna, Otto. Desarrollar un programa que dado un fichero con diferentes
palabras o frases (una en cada línea del fichero) identifique cuales son o no palíndromos. Los
ejemplos podrán contener caracteres acentuados, espacios y signos de puntuación.

Ayuda:

Para el desarrollo de este programa se incluye un fichero de ejemplo denominado


ejemplos_ejercicio_3.txt que contiene un posible palíndromo en cada línea.

Restricciones:

A continuación, se describen las diferentes restricciones que se deben aplicar a la hora de


resolver el problema.

• No se pueden utilizar las sentencias break, continue y pass.

También podría gustarte