コード例 #1
0
ListNode* sortLinkList(ListNode *head) {
    if (head == NULL) return NULL;
    if (head->next == NULL) return head; 
    ListNode* head2 = partitionLinkList(head);
    head = sortLinkList(head);
    head2 = sortLinkList(head2);
    return mergeLinkList(head, head2);
}
コード例 #2
0
 ListNode* sortList(ListNode* head) {
 	if(!head || !head->next) return head;
     ListNode *slow = head, *fast = head->next;
     while(fast && fast->next)
     {
     	slow = slow->next;
     	fast = fast->next->next;
     }
     fast = slow;
     slow = slow->next;
     fast->next = NULL;
     return mergeLinkList(sortList(head),sortList(slow));
 }