function merge ( a, b : list ) : list;
var first, last, temp : list;
begin
first := nil;
while b <> nil do
if a = nil then begin a := b; b := nil end
else begin
if b^.k > a^.k then
begin temp := a; a := a^.next end
else begin temp := b; b := b^.next end;
temp^.next := nil;
tailins( temp, first, last )
end;
tailins( a, first, last );
merge := first
end;
|