Van Emde-Boas priority queue insertion

insert( new : integer; var pq ); case pq is nil: pq := NewSingleNode( new ); case pq is boolean array: turn on corresponding entry; case pq is single element: expand entry to full node; seep into next case; case pq is full node: compute index based on "new" if bottom[index] <> nil then insert in bottom[index] else bottom[index] := NewSingleNode( new ); insert index in top queue; adjust max and min if necessary; end;

Pascal source (514.ins.p)

© Addison-Wesley Publishing Co. Inc.