最大优先队列,最小优先队列使用(c++)及运行实例结果

优先队列是一种用来维护由一组元素构成的集合的数据结构,可以用堆来实现。在优先队列中,元素被赋予优先级,当访问元素时,具有最高级优先级的元素先被访问。

最大优先队列可用于共享计算机系统的作业调度等,最小优先队列可用于基于事件驱动的模拟器等。

最大优先队列c++代码

#include <iostream>
#include<queue>
using namespace std;
/*定义一串数x与对应的优先级p*/
class node
{
public:
    int x,p;
    node(int a,int b):x(a),p(b){}//初始化
};
//标准库默认使用元素类型的<操作符来确定它们之间的优先级关系
bool operator<(const node &A,const node &B)//按照优先级p从大到小排,operator为重载运算符
{
    return A.p<B.p;
}

int main()
{
    priority_queue<node>priorityQue;//声明名为priorityQue的node类型优先队列
    priorityQue.push(node(10,3));
    priorityQue.push(node(30,1));
    priorityQue.push(node(40,2));
    priorityQue.push(node(60,4));
    priorityQue.push(node(30,6));
    priorityQue.push(node(20,5));
    cout<<"优先级从大到下排序(最大优先队列):"<<endl;
    while(!priorityQue.empty())
    {
        node C=priorityQue.top();//返回对顶元素
        priorityQue.pop();//删除队顶元素
        cout<<C.x<<"对应其优先级为"<<C.p<<endl;
    }
    return 0;
}

运行结果



最小优先队列c++代码

#include <iostream>
#include<queue>
using namespace std;
/*定义一串数x与对应的优先级p*/
class node
{
public:
    int x,p;
    node(int a,int b):x(a),p(b){}//初始化
};
//如果我们要把元素从小到大输出,我们可以传入一个比较函数
bool operator>(const node &A,const node &B)//按照优先级p从小到大排,operator为重载运算符
{
    return A.p>B.p;
}

int main()
{
    priority_queue<node,vector<node>,greater<node>>priorityQue;//声明名为priorityQue的node类型优先队列
    priorityQue.push(node(10,3));
    priorityQue.push(node(30,1));
    priorityQue.push(node(40,2));
    priorityQue.push(node(60,4));
    priorityQue.push(node(30,6));
    priorityQue.push(node(20,5));
    cout<<"优先级从小到大排序(最小优先队列):"<<endl;
    while(!priorityQue.empty())
    {
        node C=priorityQue.top();//返回对顶元素
        priorityQue.pop();//删除队顶元素
        cout<<C.x<<"对应其优先级为"<<C.p<<endl;
    }
    return 0;
}


运行结果





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值