//优先级队列
/*1先进先出
2按照优先级进行存储
3 优先级高的能出队*/
public class TestPrioLink {
public static void main(String[] args) {
// TODO Auto-generated method stub
PrioLink p=new PrioLink();
p.push(111,6 );
p.push(222,4);
p.push(333,1);
p.show();
}
}
class PrioLink{
class Entry{
int data;
Entry next;
int prio;//优先级
public Entry(){
int data=-1;
next=null;
prio=-1;
}
public Entry(int data,int prio){
this.data=data;
this.next=null;
this.prio=prio;
}
}
private Entry head=null;
public PrioLink(){
this.head=new Entry();
}
//插入 按照优先级插入
public void push(int data,int prio){
Entry cur=this.head;
for(;cur.next!=null;cur=cur.next){
if(cur.next.prio>prio){
break;
}
}
Entry entry=new Entry(data,prio);
entry.next=cur.next;
cur.next=entry;
}
// 出队 头结点后一个
public void pop(){
Entry cur=this.head;
if(cur.next==null){
return;
}
Entry entry=cur.next;
cur.next=entry.next;
entry=null;
}
public void show(){
Entry cur=this.head.next;
while(cur!=null){
System.out.println(cur.data+" ");
cur=cur.next;
}
System.out.println();
}
}