优先级队列

//优先级队列
/*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();
    }
}

 

posted on 2018-05-11 14:13  番茄疯了  阅读(109)  评论(0)    收藏  举报