欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

C++ priority_queue对链表节点建立小根堆

发布时间:2024/7/23 c/c++ 59 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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对链表节点建立小根堆的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。