题目链接:Insertion Sort List
- 题目描述:
Sort a linked list using insertion sort.
(1)思路:将链表分为两部分,前半部分为已经排序好的,后半部分是未排序的,用指针指向未排序的头结点,遍历已经排序的部分,找到第一个大于该值的节点,然后将其插入到该节点之前一个位置即可;未排序部分的头结点向后移一个节点即可,直至遍历完整个链表。
(2)代码:
class Solution {
public:
ListNode* insertionSortList(ListNode* head) {
ListNode *newhead = new ListNode(-1);
while(head != NULL){
ListNode *temp = head->next;
ListNode *cur = newhead;
while(cur->next != NULL &&cur->next->val < head->val){
cur = cur->next;
}
head->next = cur->next;
cur->next = head;
head = temp;
}
return newhead->next;
}
};