1package body Opt27_Pkg is 2 3 type Node_Rec_T is record 4 Element : Element_T; 5 Left : Node_T; 6 Right : Node_T; 7 end record; 8 9 function Is_Null (Node : in Node_T) return Boolean is 10 begin 11 return (Node = null); 12 end Is_Null; 13 14 function Find_Elem (Template : Template_T; List : List_T) return Node_T is 15 Element_Found : Boolean := False; 16 Node_Walker : Node_T := null; 17 begin 18 Node_Walker := List.First_Node; 19 20 while not Element_Found and (Node_Walker /= null) loop 21 22 if Is_Match (Node_Walker.Element, Template) then 23 Element_Found := True; 24 else 25 Node_Walker := Node_Walker.Right; 26 end if; 27 end loop; 28 29 return Node_Walker; 30 end; 31 32end Opt27_Pkg; 33