题解 | #单链表的排序#

单链表的排序

https://www.nowcoder.com/practice/f23604257af94d939848729b1a5cda08

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 *	ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
#include <queue>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 the head node
     * @return ListNode类
     */
     struct cmp{
      bool operator()(ListNode* node1,ListNode* node2){
          return node1->val>node2->val;
      }
     };
    ListNode* sortInList(ListNode* head) {
       priority_queue<ListNode*,vector<ListNode*>,cmp>pq;
       while(head){
        pq.push(head);
        head=head->next;
       }
       ListNode* list=new ListNode(-1);
       ListNode* pre=list;
       while(!pq.empty()){
        list->next=pq.top();
        list=list->next;
        list->next = nullptr;//防止形成循环队列
        pq.pop();
        cout<<1<<endl;
       }
     return pre->next;
    }
};

使用优先级队列要注意将当前节点的下一个节点的地址信息置空,防止形成循环链表

全部评论

相关推荐

练习生懒羊羊:开飞机把这个公司创飞吧
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 11:27
明天又是董事长面,啥时候是个头啊
在太阳里长大的人:公司就仨人吧😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务