题目:链表插入排序
问题描述:用插入排序对链表排序
思路:申请新链表,插入元素,与链表中的元素比较大小,如果大,就插到后面,若小,就插在前面。
代码:
class Solution {
public:
/**
* @param head: The first node of linked list.
* @return: The head of linked list.
*/
ListNode *insertionSortList(ListNode *head) {
ListNode *dummy = new ListNode(0);
while (head != NULL) {
ListNode *node = dummy;
while (node->next != NULL && node->next->val < head->val) {
node = node->next;
}
ListNode *temp = head->next;
head->next = node->next;
node->next = head;
head = temp;
}
return dummy->next;
}
};
感想:感觉这道题比上一道难,参考了老师的代码,
ListNode *temp = head->next;
head->next = node->next;
node->next = head;
head = temp;
这一块刚开始一直没弄明白,最后终于懂了,开心。