在队列中,元素从队尾进入,从队首删除。
c++实例:
#include<queue>
#include<iostream>
using namespace std;
int main(){
priority_queue<int> q;//声明一个装int类型数据的优先队列
q.push(1);//入队
q.push(2);
q.push(3);
while(!q.empty()) {//判断队列是否为空
cout << q.top << endl;//访问队列首元素
q.pop();//出队
}
return 0;
}
/*
输出为
3
2
1
*/
Java:
import java.util.Queue;
import java.util.PriorityQueue;
public class Main {
public static void main(String[] args) {
Queue<Integer> queue = new PriorityQueue<Integer>(); // 声明一个装 Integer 类型数据的队列
queue.add(3); // 入队
queue.add(2);
queue.add(1);
while (!queue.isEmpty()) { // 判断队列是否为空
System.out.println(queue.peek()); // 访问队列首元素
queue.remove(); // 出队
}
}
}
/*
输出
1
2
3
*/
优先队列的优先级重载:
struct node {
int dist, loc;
node() { }
bool operator < (const node & a) const {
return dist > a.dist;
}
};
priority_queue <node> Q;
class Data implements Comparable<Data> {
int dist, loc;
public int compareTo(Data o) {
return dist - o.dist;
}
}
Queue<Data> queue = new PriorityQueue<Data>();