     function search( key : typekey; var head : list ) : list;
     label 999;
     var p, q : list;

     begin

     if head = nil then search := nil
     else if key = head^.k then search := head
     else begin
          {*** Find record ***}
          p := head;
          while p^.next <> nil do
               if p^.next^.k = key then begin
                    {*** Move to front of list ***}
                    q := head;
                    head := p^.next;
                    p^.next := p^.next^.next;
                    head^.next := q;
                    search := head;
                    goto 999 {*** Break ***}
                    end
               else p := p^.next;
          search := nil
          end;
     999:
     end;
