/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: struct Mycompare { bool operator()(ListNode* a, ListNode* b) { return a->val > b->val; } }; ListNode *mergeKLists(vector<ListNode *> &lists) { // auto compare=[](ListNode*&a,ListNode*&b) // { // return a->val>b->val; // }; priority_queue<ListNode*,vector<ListNode *>,Mycompare> que; for(int i=0;i<lists.size();i++) { if(lists[i]) que.push(lists[i]); } ListNode* head=new ListNode(0); head->next=NULL; ListNode* tail=head;//尾这指针 while(!que.empty()) { ListNode* temp=que.top(); ListNode* t=temp->next; que.pop(); temp->next=tail->next; tail->next=temp; tail=temp; if(t) { que.push(t); cout<<"K"; } } return head->next; } };