/**
 * struct ListNode {
 *    int val;
 *    struct ListNode *next;
 * };
 */


class Solution {
public:
    /**
     * 
     * @param head ListNode类 the head node
     * @return ListNode类
     */
    static bool cmp(ListNode* node1, ListNode* node2)
    {
        return node1->val < node2->val;
    }
    ListNode* sortInList(ListNode* head) {
        // write code here
        vector<ListNode*> nodeVec;
        ListNode* p = head;
        while(p != NULL)
        {
            nodeVec.emplace_back(p);
            p = p->next;
        }
        sort(nodeVec.begin(), nodeVec.end(), cmp);
        for (int i = 0; i < nodeVec.size()-1;i++)
            nodeVec[i]->next = nodeVec[i+1];
        nodeVec[nodeVec.size()-1]->next = nullptr;
        return nodeVec[0];
    }
};