	function extract( var pq : list ) : typekey;
	var	max, p : list;

	begin
	if pq=nil then Error {*** Extraction from an empty list ***}
	else if pq^.next = nil then begin
		extract := pq^.k;	pq := nil	end
	else begin
		max := pq;	p := pq;
		while p^.next <> nil do begin
			if max^.next^.k < p^.next^.k then max := p;
			p := p^.next
			end;
		if max^.next^.k < pq^.k then begin
			extract := pq^.k;   pq := pq^.next   end
		else begin
			extract := max^.next^.k;
			max^.next := max^.next^.next
			end
		end
	end;
