Certamen 1 - Departamento de Electrónica

Anuncio
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO320 Estructuras de Datos y Algoritmos
25/10/2005
Segundo Certamen
Pregunta 1 (30 puntos) :
a) Desarrolle las funciones buscar( ) e insertar( ) para almacenar elementos con una clave
de tipo float usando una tabla hash abierta. Asuma que tiene una función int hash(float) y
que el tamaño de la tabla de hash es B.
b) Calcule (paso a paso) la complejidad T( ) y Θ( ) de su funciones buscar( ) e insertar( ).
c) Describa en sus palabras como se usa una relación de recurrencia para calcular la
complejidad. Como ejemplo calcule la solución de: T(n) = T(n/2) + n, con T(1)= 2
n
Puede usar:
∑ 2i = 2
(n + 1)
−2
i=1
Pregunta 2 (20 puntos) :
K
C
B
N
E
a) Indique los factores de balance de cada nodo.
b) Dibuje el árbol AVL después de la inserción de un nodo con valor A. Muestre paso a
paso todas las operaciones que se efectúan para actualizar el árbol AVL.
c) Habiendo ya insertado el nodo con valor A. Dibujar el árbol AVL después de la
eliminación del nodo con valor B. Muestre paso a paso todas las operaciones que se
efectúan para actualizar el árbol AVL.
d) Dibuje el árbol AVL después de la inserción de un nodo con valor D. Muestre paso a
paso todas las operaciones que se efectúan para actualizar el árbol AVL.
25-10-2005
1
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO320 Estructuras de Datos y Algoritmos
Pregunta 3 (30 puntos) :
Usando este nodo:
typedef struct moldenodo
{
char clave;
struct moldenodo *left;
struct moldenodo *right;
} *pnodo, nodo;
a) Diseñe una función recursiva que cuente los nodos en un árbol binario con valores
mayores que un valor dado y que imprima esos nodos a la pantalla:
int ContarNodos (pnodo t, char valor);
b) Diseñe una función iterativa que en un árbol binario busque el nodo correspondiente a la
clave y divida el árbol en dos desde ese nodo. A la salida se actualizan los siguientes
parámetros: puntero al nodo que contiene la clave, un puntero al subárbol izquierdo desde
el nodo con la clave y un puntero al subárbol derecho desde el nodo con la clave.
El árbol debe retornar 0 si encuentra el nodo y 1 si no lo encuentra:
int DividirArbol(char clave, pnodo t, pnodo *pClave, pnodo *pIzq, pnodo *pDer);
Pregunta 4 (20 puntos):
Para una cola de tamaño 5, con las siguientes variables globales: cabeza, cola, encolados.
Considere la siguiente secuencia de operaciones:
Indice
Valor
Put 13
0
Put 13
1
Put 4
2
Put 8
3
4
Get
Put 7
Put 9
Put 9
Get
Put 9
a) Indique el valor de las variables globales antes y después de cada operación.
b) Muestre el contenido final de la cola después de realizadas todas las operaciones
anteriores.
25-10-2005
2
Descargar