class Solution {
public:
ListNode * insertionSortList(ListNode* head) {
if (head == NULL)
return head;
ListNode* dummyHead = new ListNode(0);//先建立一个虚头结点
dummyHead->next = head;
ListNode* cur = head;
while (cur->next) {
ListNode* next = cur->next;
ListNode* p = dummyHead;
while (p->next != next && p->next->val < next->val)
p = p->next;//寻找到大于插入元素的前一个元素
if (p->next != next) {//如果在已排序的元素中找到大于插入元素的值
ListNode*q = next->next;
next->next = p->next;
p->next = next;
cur->next = q;
}
else {
cur = next;
}
}
return dummyHead->next;
}
};