Buenas tardes,
Observando la solución que se propone, la misma es recursiva, yo pensé esta otra, quería saber si es adecuada:
PROCEDURE ObtenerContacto (tel:Telefono; agenda:Agenda):InfoCuenta;
VAR TelAux:Telefono;
VAR NodoAgendaAux:Agenda;
BEGIN
TelAux:=tel;
NodoAgendaAux:=agenda^.primerhijo;
WHILE NodoAgendaAux^.EsHoja=FALSE DO
IF (NodoAgendaAux^.sighermano^.digito=Primero(TelAux)) THEN
NodoAgendaAux:=NodoAgendaAux^.sighermano;
ELSE
NodoAgendaAux:=NodoAgendaAux^.primerhijo;
END;
TelAux:=Resto(TelAux);
END;
RETURN NodoAgendaAux^.contacto;
END ObtenerContacto;
Saludos y agradezco comentarios,
Diego