Estructuras de Datos. 14 de junio de Apellidos

Documentos relacionados
TEMA 4. Árboles CONSIDERACIONES GENERALES.

Tema 2 Tipos abstractos de datos. 2.2 Pila de números enteros

TEMA 3. Listas. CONSIDERACIONES GENERALES.

ESTRUCTURAS DE DATOS LISTAS 93

Segundo parcial de Programación 2

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º. Leonardo DaVinci. Piccasso La Tempestad. Mona Lisa

INGENIERIA DE SISTEMAS 19 ESTRUCTURAS DE DATOS (Listas simples) ARBOLES

Algoritmos y Estructuras de Datos: Introducción a la Recursión de Programas. Guillermo Román Díez

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º

Estructuras de datos Solemne 2

Ejercicio 2 Considere la representación para Lista de Naturales y Árbol Binario de Naturales de la Figura 1.

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

Para la resolución de los ejercicios, se dispone de una implementación de árbol binario a través de la clase BinTree con la siguiente especificación.

Árboles. Árboles. Árboles binarios de búsqueda. Árboles. Inserción en un árbol. Árbol binario de búsqueda

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas

Programación II Arboles Binarios(AB)

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

Tema 2: Clases y Objetos

Clase adicional 9. Listas enlazadas. Temas. Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño

TEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica

Versión Iterativa de recuperar en un. Soluciones Ejercicios Tema 11. protected NodoABB<E> recuperarmax(nodoabb<e> n) { while (n.der!= null) n = n.

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

IMPLEMENTACIÓN DE PILAS CON LISTAS EN C++

Programación II Árboles binarios de búsqueda (ABB)

Soluciones Ejercicios Tema 7. Cambio de Signo Pila (3/3) if (!p.esvacia()) { d i l cambiasignopila(p); this.apilar(new Integer(-dato));

ESTRUCTURAS DE DATOS ÁRBOLES 143

LEA ATENTAMENTE ESTAS INSTRUCCIONES ANTES DE COMENZAR LA PRUEBA

Algoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez

Estructura de datos y de la información Boletín de problemas - Tema 10

/** * Raíz del árbol de contactos presentes en el directorio */ private. /** * Número de contactos en el directorio */ private int numcontactos;

Examen escrito de Programación 1

Estructura de Datos. Temario Unidad VI. Árboles Árboles Binarios

Tema 2 Tipos abstractos de datos. 2.3 Cola de números enteros.

1. (1 punto) Dado el siguiente fragmento de programa:

Tema 7- Modelo y Aplicación de Pila, Cola y. Tema 7- Modelo y Aplicación de. Lista Con Punto de Interés

1. (1 punto) Dado el siguiente fragmento en Java:

El método main de la clase PruebaArbol, empieza creando una instancia de un objeto Árbol vacío y asigna su referencia a la variable árbol

Programación Estructuras Arborescentes

Definición de árbol. Árboles

Instituto de Computación. Facultad de Ingeniería. Universidad de la República Examen de Programación 2 03 de Agosto de 2006 Generalidades:

ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

M.C. Yolanada Moyao Martínez

Estructuras de datos y algoritmos

Temario. Tema 5. Estructuras de Datos no Lineales. 5.1 Árboles Binarios 5.2 Árboles n-arios

A) PREORDEN B) INORDEN C) POSTORDEN D) NIVELES

Lista Simple con Puntero al Principio y Puntero al Final

Estructuras de datos Solemne 2

Soluciones Ejercicios Tema 8

TEMA 1. Tipos Abstractos de Datos. CONSIDERACIONES GENERALES.

Estructuras de Datos Clase 4 Pilas y colas

Programación de sistemas Árboles

EDA. Tema 8 Colas de Prioridad: Heaps

Segundo Parcial de Programación 2 7 de junio de 2017

PILAS. Prof. Ing. M.Sc. Fulbia Torres

Examen de Introducción al Software (Ingeniería Informática)

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos

ESTRUCTURAS DE DATOS Y ALGORITMOS

Una clave Definición informal La clave debe contener una secuencia de una o más letras seguidas por uno o más dígitos

Examen de Estructuras de Datos y Algoritmos (Ingeniería Informática)

Grados Ing. Inf. y Mat. Inf. Noviembre 2011 Algoritmos y Estructura de Datos Página 1 de 6

Métodos CON valor de retorno

8 de Junio 2005 UNIVERSITAT DE VALÈNCIA

Examen de Programación 1. Viernes 31/enero/2014. Problema 1 o (2.5 puntos) Disponer un documento de identificación con fotografía sobre la mesa.

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010

324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso

Propiedades. Ejercicios Tema 14. Representación de Grafo. Grado de Grafo (Matriz de Adyacencia)

Programación 2 Práctico 9 - TADs Árbol Binario de Búsqueda, Árbol Finitario y Árbol n-ario

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO

Estructura de Datos y de la Información

Solución al Examen de Fundamentos de Computadores y Lenguajes

1. Una pila funciona según el método LIFO (Last In First Out ). Se define la clase Pila de la siguiente forma:

ADSW Tema 2 Diccionarios

Sólo una opción es correcta en cada pregunta. Cada respuesta correcta suma 1 4. puntos. Cada respuesta incorrecta resta 1 12

Algoritmos y Estructuras de Datos. Guillermo Román Díez

Ejercicio 1 (proyecto prlistas, paquete listas)

Prueba N o 1. Programación II

ESTRUCTURAS DE DATOS TIPOS ABSTRACTOS DE DATOS 51

Estructuras de Datos Clase 4 Pilas y colas

Tema 8. Listas. José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz

Versión Iterativa de recuperar en un. Ejercicios Tema 11. Implementa una versión del método recuperar iterativa con la siguiente especificación:

LISTAS ENLAZADAS FUNDAMENTOS TEORICOS

Tema 10: Árbol binario de búsqueda

Examen de Traductores, Intérpretes y Compiladores. Convocatoria ordinaria de Junio de er Curso de I.T. Informática de Sistemas.

Lenguajes de Programación

Fundamentos de Programación

Estructuras de Datos

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

CLAVE EXAMEN: a cd. c u r s o r = c u r s o r. g e t S i g u i e n t e ( ) ; p o s i c i o n ++;

Estructuras Enlazadas AyED UTN-BA

Examen escrito de Programación 1

Examen de Programación 2 Diciembre de 2012

OBJETIVOS ÍNDICE BIBLIOGRAFÍA

Tema 7: Árbol Binario

PROGRAMA EDUCATIVO INFORMATICA ADMINISTRATIVA

Examen Teórico. Convocatoria de Julio de 2015

Introducción: una simple colección

EJERCICIO 2 (3 PUNTOS) A) Sea el árbol binario AVL de la figura siguiente: B) Dada la estructura de la figura siguiente:

Programación 1 Tema 5. Instrucciones simples y estructuradas

Transcripción:

Ejercicio 1) (3 puntos). Dado el TAD Pila de Números Enteros con las siguientes operaciones: boolean pilavacia (); void apilar (int x); int desapilar () throws PilaVacia; SE PIDE: Codificar un método estático entero en Java que, recibiendo como parámetro una pila perteneciente al TAD anterior, devuelva como resultado: -1. Si el elemento del fondo de la pila es menor que el número de elementos de la misma. 0. Si el elemento del fondo de la pila es igual que el número de elementos de la misma. +1. Si el elemento del fondo de la pila es mayor que el número de elementos de la misma. EJEMPLO: Dada la pila mostrada en la figura, el método deberá devolver el valor 0 dado que dicha pila contiene 9 elementos, cantidad que coincide con el valor del fondo de ella. OBSERVACIONES: En caso de que la pila se encuentre vacía el método devolverá el valor 0. La pila puede contener elementos repetidos. Además de la pila, la cabecera del método podrá incluir otros argumentos. 9 7 2 8 2 3 2 9 9 NORMAS DE OBLIGADO CUMPLIMIENTO (su no observación supondría la calificación de 0 puntos): Queda expresamente prohibida la utilización de operaciones no definidas en el TAD. No se permite utilizar ninguna estructura de datos auxiliar. Cada elemento de la pila solamente podrá ser, a lo sumo, desapilado y apilado una vez. Al finalizar el proceso la pila deberá quedar con el contenido y estructura iniciales. Responder sobre esta misma hoja. No se permitirá la entrega de hojas adicionales.

Solución: public static int comprobarfondo (Pila p, int contador) throws PilaVacia { int elem, dato; if (!p.pilavacia ()) { elem = p.desapilar(); contador++; if (!p.pilavacia ()) dato = comprobarfondo (p, contador); else if (contador == elem) dato = 0; else if (contador < elem) dato = 1; else dato = -1; p.apilar (elem); else dato = 0; return dato;

Ejercicio 2) (3 puntos). Dada la siguiente declaración de lista calificada no ordenada de números naturales: public class Lista { class NodoLista { int dato; NodoLista sig; NodoLista inicio; SE PIDE: Codificar un método entero en Java que, recibiendo una lista perteneciente al tipo anterior y dos valores enteros: x y d, devuelva la clave que se encuentra a la distancia d del nodo que contiene la clave x. EJEMPLO: Dada la lista de la figura, con x = 6 y d = 2, el método deberá devolver el valor 5, que es la clave que se encuentra a una distancia (d) de dos posiciones del nodo que contiene la clave (x) 6. 3 4 1 6 9 5 OBSERVACIONES: Si la clave x no se encuentra en la lista, el método devolverá el valor 0. Igualmente, si no existe el elemento d posiciones después de la clave x, se sustituirá su valor por 0. Dado que se trata de una lista calificada, no existen claves repetidas. Se supone que d es mayor que cero. NORMAS DE OBLIGADO CUMPLIMIENTO (su no observación supondría la calificación de 0 puntos): No se permite utilizar ninguna estructura de datos auxiliar. Solo se permitirá la realización de un único recorrido en la lista. Al finalizar el proceso la lista deberá quedar con el contenido y estructura iniciales. Responder sobre esta misma hoja. No se permitirá la entrega de hojas adicionales.

Solución: B. Solución recursiva: static int elementod (NodoLista lista, int d) { int resul = 0; if (lista!= null) { if (d == 1) resul = lista.clave; else resul = elementod (lista.sig, d-1); static int devolverelementoposiciond (NodoLista lista, int x, int d) { int resul; if (lista!= null) { if (lista.clave == x) resul = elementod (lista.sig, d); else resul = devolverelementoposiciond (lista.sig, x, d); else resul = 0; static int llamadasumarelementosposiciond (Lista lista, int x, int d) { return devolverelementoposiciond (lista.inicio, x, d); C. Solución iterativa: static int devolverelementoposicionditerativo (Lista lista, int x, int d) { int resul = 0, i = 0; NodoLista aux = lista.inicio; if (aux!= null) { boolean encontrado = false; while (aux!= null &&!encontrado) { encontrado = aux.clave == x; if (!encontrado) aux = aux.sig; if (encontrado) { while (i < d && aux!= null) { aux = aux.sig; i++; if (i == d) resul = aux.clave;

Ejercicio 3) (3 puntos). Dada la siguiente declaración de árbol binario de números enteros: public class Arbol { class NodoArbol { int clave; NodoArbol iz; NodoArbol de; NodoArbol raiz; SE PIDE: Implementar un método booleano en Java que, recibiendo como argumento un árbol perteneciente al tipo anterior, devuelva el valor true si el valor de la clave contenida en el nodo raíz coincide con el número de hojas y false en caso contrario. EJEMPLO: Dado el árbol de la figura, el método solicitado devolverá el resultado false dado que la clave contenida en el nodo raíz (10) no coincide con el número de hojas (4). OBSERVACIONES: Si se recibe un árbol vacío, la función devolverá el valor true. 10 20 30 40 50 60 70 NORMAS DE OBLIGADO CUMPLIMIENTO (su no observación supondría la calificación de 0 puntos): No se permite la utilización de ninguna estructura de datos auxiliar. Sólo se permite la realización de un único recorrido del árbol. Al final de la ejecución de la función, el árbol deberá permanecer con la estructura y el contenido iniciales Responder sobre esta misma hoja. No se permitirá la entrega de hojas adicionales.

Solución: static int contarhojas (NodoArbol arbol) { int resul = 0; if (arbol!= null) if (arbol.iz == null && arbol.de ==null) resul = 1; else resul = contarhojas(arbol.iz)+contarhojas(arbol.de); static boolean comprobarnumerohojas (Arbol arbol) { boolean resul = true; if (arbol.raiz!= null) resul = (arbol.raiz.clave == contarhojas(arbol.raiz));

Ejercicio 4) (1 punto). Dada la siguiente declaración de la clase Grafo dirigido, no etiquetado ni ponderado: public class Grafo { int maxnodos; int numvertices; boolean matrizady [ ] [ ]; boolean dirigido = false; SE PIDE: Implementar un método estático booleano en Java que, recibiendo como argumento un grafo perteneciente a la clase anterior, devuelva el valor true si existe algún bucle en el grafo, y false en caso contrario. EJEMPLO: Dado el grafo de la figura, el método solicitado devolverá el valor true dado que existe un bucle (correspondiente al vértice de índice 4) en el mismo. 0 1 2 3 4 NORMAS DE OBLIGADO CUMPLIMIENTO (su no observación supondría la calificación de 0 puntos): Responder sobre esta misma hoja. No se permitirá la entrega de hojas adicionales.

Solución: public static boolean comprobarsibucle (Grafo g) { boolean resul = false; int i; for (i = 0; i < 5; i++) if (g.matrizady [i] [i]) resul = true;