package body priority_queue_pkg is function empty(s:in p_sor) return boolean is begin return s.size=0; end empty; procedure push(s:in out p_sor;p: in priority; e:in elem) is begin s.elemek(s.last).adat:=e; s.elemek(s.last).prior:=p; emel(s,s.last); s.last:=s.last+1; s.size:=s.size+1; end push; procedure top(s:in out p_sor;p: out priority; e:out elem) is begin e:=s.elemek(1).adat; p:=s.elemek(1).prior; end top; procedure pop(s:in out p_sor) is begin s.elemek(1).adat:=s.elemek(s.last-1).adat; s.elemek(1).prior:=s.elemek(s.last-1).prior; s.last:=s.last-1; s.size:=s.size-1; sully(s,1,s.last); end pop; function size(s:in p_sor) return natural is begin return s.size; end size; procedure emel(A:in out p_sor;i:integer) is l:boolean:=true; temp:sorelem; begin while i>1 and l loop if A.elemek(integer(i/2)).priorv) or else A.elemek(2*u).prior>A.elemek(2*u+1).prior then ir:=2*u; else ir:=2*u+1; end if; if A.elemek(u).prior>=A.elemek(ir).prior then l:=false; else temp.prior:=A.elemek(u).prior; temp.adat:=A.elemek(u).adat; A.elemek(u).prior:=A.elemek(ir).prior; A.elemek(u).adat:=A.elemek(ir).adat; A.elemek(ir).prior:=temp.prior; A.elemek(ir).adat:=temp.adat; u:=ir; end if; end loop; end sully; end priority_queue_pkg;