Programación II |
Examen Final |
Febrero de 2000 | Altillo.com |
1. Dado un Árbol Binario no vacío cuyos nodos contienen números enteros y un valor entero.
Se pide:
a) Definir la estructura en Pascal (parte declarativa: CONST, TYPE y VAR).
b) Desarrollar un procedimiento recursivo con los parámetros necesarios y suficientes, que elimine del árbol los nodos HOJAS que sean múltiplos del valor dado.
c) Escribir las instrucciones necesarias para la llamada al procedimiento desarrollado en b), indicando claramente qué parámetros utiliza y sus valores.
Ejemplo:
(80)
/ \
(50)
(100)
/ \
/ \
(20) (70) (90) (200)
/
/ / \
(60) (85) (150)
(300)
Si Valor dado = 2 ---> el Árbol quedaría:
(80)
/ \
(50)
(100)
\ / \
(70) (90) (200)
/
(85)
2. Dada la siguiente declaración y procedimiento recursivo:
Type
TLISTA = ^ PNODO;
PNODO = Record
DATO: Integer;
SIG: TLISTA
End;
Var
LIST, M : TLISTA;
Procedure CAVERNA (Var L:TLISTA; Var M:TLISTA; N:Integer);
Var
X, AUX: TLISTA;
Begin
if L <> Nil Then
Begin
CAVERNA (L^.SIG, M, N);
if (L^.DATO MOD N = 0) Then
Begin
X := L^.SIG;
AUX := M;
M:= L;
L:= X;
M^.SIG := AUX
End
End;
End;
Se pide:
Desarrollar el seguimiento del procedimiento CAVERNA indicando claramente el contenido y actualización de las variables, graficando las modificaciones de la lista y mostrando cómo queda luego de la ejecución, cuando se realiza la siguiente secuencia de llamada:
M := nil;
CAVERNA (LIST, M, 3);