在生活中,我们常会遇到这样的问题,排队过程中女士优先,游戏中会员比普通用户
的优先级也要高,这就有了我们的优先队列。
优先队列的简单说就是在普通队列中加入标志,比如我们用数字 0 1 2 3来表示,数
字小的对应节点的优先级就高,我们就将他放在合适的位置。如图
新节点的标志等级是3,我们要把他插入到1后面,进而使得整个队列优先合适
初始化
class prioLink{
class Entry{
int data;
Entry next;
int prio;//优先级
public Entry(){
data = -1;
next = null;
prio = -1;
}
public Entry(int data,int prio){
this.data = data;
this.prio = prio;
next = null;
}
}
private Entry head = null;
public prioLink(){
head = new Entry();
}
入队
//按照优先级进行插入
public boolean isnull(){
if(head == null){
return true;
}
return false;
}
//入队
public void insert(int data,int prio){
Entry cur = new Entry(data,prio);
Entry entry = head;
if(isnull()){
return;
}
while(entry.next!=null){
if(entry.next.prio>cur.prio){
break;
}
entry = entry.next;
}
cur.next = entry.next;
entry.next = cur;
}
出队
//出队
public void pop(){
if(isnull()){
return ;
}
Entry cur = this.head.next;
head.next = cur.next;
}
输出
public void show(){
Entry cur = this.head.next;
while(cur!=null){
System.out.println("data: "+cur.data);
cur = cur.next;
}
}
新手入门,如有错误,请多多指教