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对链表节点建立小根堆的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图像处理:给验证码图片做降噪处理及数据清
- 下一篇: Windows下安装Tensorflow