P1 EdD - escuela de informática UTEM

Anuncio
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
Profesores : Mauro Castillo V.
: Héctor Pincheira C.
DEPARTAMENTO DE INFORMÁTICA Y COMPUTACIÓN
PRUEBA N° 1 ESTRUCTURAS DE DATOS
SEGUNDO SEMESTRE DE 2005
1
2
3
4
1.0
Nombre Completo
Problema 1 (1.5)
Un Árbol Par Derecho (APD) es un árbol binario con:
 Cero nodos, ó
 Un número par de nodos distribuidos como una raíz, con un subárbol izquierdo que
es una hoja y un subárbol derecho que es un APD.
Considerando la definición
typedef Nodo *Doslinks;
implementar el operador iterativo Doble(A) que convierte un APD A, de tipo
Doslinks, en una lista lineal de enlace doble. Esto significa que, por utilizar los mismos
nodos de A, la lista también será de tipo Doslinks.
Problema 2 (1.5)
Con respecto a un stack S de valores enteros no negativos, implementar el operador
recursivo Clonar(S) que modifica S, generando sobre cada uno de sus elementos,
una cantidad de copias equivalente a su valor numérico.
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
Profesores : Mauro Castillo V.
: Héctor Pincheira C.
DEPARTAMENTO DE INFORMÁTICA Y COMPUTACIÓN
Problema 3 (1.5)
El TAD matriz dispersa se representa de la forma
typedef struct Dispersa{int f; int c; base nulo; Compacta a;};
y, sobre una variable S de tipo Dispersa, es posible aplicar los siguiente operadores:
Eom(S)
: Indica que en S no quedan elementos.
Primero(S, i, j) : Retorna los índices del elemento actual en S y se posiciona en
el siguiente elemento.
Agregar(S, i, j, e) : Agrega en S el elemento e en la posición i, j.
Valor(S, i, j)
: Retorna el valor del elemento de índices i, j en S.
Considérense las matrices A, B, C, de tipo Dispersa y A, B del mismo orden, para
implementar el operador Sumar(A, B, C), correspondiente a la operación C = A + B,
tal que Cij = Aij + Bij sí y sólo sí Aij  0 y Bij  0.
Problema 4 (1.5)
Un polinomio se representa mediante dos colas Q y R que contienen: los coeficientes
(reales) la primera y los exponentes (enteros) la segunda. Las colas tienen la misma
cantidad de elementos y existe una correspondencia posicional entre coeficiente y
exponente para cada término del polinomio. Implementar el operador recursivo
Evaluar(Q, R, x) que evalúa un polinomio así representado en el punto x.
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
Profesores : Mauro Castillo V.
: Héctor Pincheira C.
DEPARTAMENTO DE INFORMÁTICA Y COMPUTACIÓN
SOLUCIÓN PRUEBA 1 * ESTRUCTURAS DE DATOS * SEM. 2-05
Problema 1 (1.5)
Doslinks Doble(Doslinks &A)
{ Doslinks D, P, Q;
P = NULL;
While(A != NULL)
{ Q = A->izq;
Q->izq = P;
Q->der = A;
if(P != NULL) P->der = Q;
else D = Q;
P = A;
A = A->der;
}
}
Problema 2 (1.5)
void Clonar(Stack &S)
{ if(!S.Empty())
{ int e = S.Pop();
Clonar(e, S);
S.Push(e);
for(int i=0; i<e; i++)
S.Push(e);
}
}
Problema 3 (1.5)
void Sumar(Dispersa &A, Dispersa &B, Dispersa &C)
{ int i, j;
Base e;
C.f = A.f;
C.c = A.c
while(!Eom(A))
{ Primero(A, i, j);
e = Valor(B, i, j);
if(e != 0);
Agregar(C, j, i, Valor(A, i, j) + e);
}
}
Problema 4 (1.5)
float Evaluar(Cola &Q, Cola &R, float x)
{ if(!Q.Vacia())
{ float c = Q.Extraer();
int e = R.Extraer();
return c*pow(x, e) + Evaluar(Q, R, x);
}
else
return 0;
}
Descargar