All pastes #973884 Raw Edit

Stuff

public text v1 · immutable
·published 2008-04-06 11:45 UTC
rendered paste body
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)).prior<A.elemek(i).prior then
       temp.prior:=A.elemek(i).prior;
       temp.adat:=A.elemek(i).adat;
         A.elemek(i).prior:=A.elemek(integer(i/2)).prior;
       A.elemek(i).adat:=A.elemek(integer(i/2)).adat;
       A.elemek(integer(i/2)).prior:=temp.prior;
         A.elemek(integer(i/2)).adat:=temp.adat;
        else
       l:=false;
        end if;
    end loop;
    end emel;

    procedure sully(A:in out p_sor;uu:in integer;v:in integer) is
    l:boolean:=true;
        ir,u:integer;
    temp:sorelem;
    begin
        u:=uu;
        while (2*u<=v) and l loop
            if (2*u+1>v) 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;