C++ priority_queue对链表节点建立小根堆
生活随笔
收集整理的这篇文章主要介绍了
C++ priority_queue对链表节点建立小根堆
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
链表的节点为:
struct ListNode {int val;ListNode *next;ListNode() : val(0), next(nullptr) {}ListNode(int x) : val(x), next(nullptr) {}ListNode(int x, ListNode *next) : val(x), next(next) {}};首先对链表节点建立一个结构体,结构体包含节点和节点的val值,val值用于优先队列的比较
struct qnode{int val;ListNode* node;qnode(ListNode* n):val(n->val),node(n){};qnode():val(0),node(nullptr){};bool operator < (const qnode& n) const{return val>(n.val); //因为是小根堆,所以用大于号} };定义关于qnode结构体优先队列:
priority_queue<qnode> q;例如有一个链表节点ListNode* node,将其push进优先队列q的方法为:
q.push(node);此时会调用qnode的第一个构造函数,用node构造一个qnode结构体push进队列里
优先队列里的每个元素(即qnode结构体)通过每个链表节点的val进行排序。
总结
以上是生活随笔为你收集整理的C++ priority_queue对链表节点建立小根堆的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 图像处理:给验证码图片做降噪处理及数据清
- 下一篇: C++ 传递字符串数组给函数参数