public class PriorityQApp
{
public static class PriorityQ
{
// array in sorted order,form maxt at 0 to min at size-1
private int maxSize;
private long[] queArray;
private int nItems;
public PriorityQ(int s)
{
// Construct Priority based on paramter s
maxSize = s;
queArray = new long[maxSize];
nItems = 0;
}
public void insert(long item)
{
int j ;
if(nItems == 0)
{
queArray[nItems++] = item;
}else
{
for(j=nItems-1;j>=0;j--)
{
if(item > queArray[j])
queArray[j+1] = queArray[j];
else
break;
}
// 若要新插入的數據比隊列中當前位置的數據小,
// 則將要新插入的數據放到當前數據的前面,保證先出。隊列是先進先出
queArray[j+1] = item;
// 每插入一個數據,隊列長度增1
nItems++;
}
}
public long remove()
{
return queArray[--nItems];
}
public long peekMin()
{
return queArray[nItems-1];
}
public boolean isEmpty()
{
return (nItems==0);
}
public boolean isFull()
{
return nItems==maxSize;
}
}
public static void main(String[] args)
{
PriorityQ thePQ = new PriorityQ(5);
thePQ.insert(30);
thePQ.insert(50);
thePQ.insert(10);
thePQ.insert(40);
thePQ.insert(20);
while(!thePQ.isEmpty())
{
long item = thePQ.remove();
System.out.print(item+" ");
}
System.out.println("");
}
} spa