首页 > 代码库 > LeetCode:Insertion Sort List
LeetCode:Insertion Sort List
题目描述:
Sort a linked list using insertion sort.
思路:在head之前插入一个假头结点,便于在head节点之前插值。遍历链表,对于每一个节点,在它前面的有序的节点中找到第一个比它大的节点,将它插到该节点的前面。链表遍历结束后即得到有序链表。
代码:
ListNode * Solution::insertionSortList(ListNode *head) { if(head == NULL || head->next == NULL) return head; ListNode * fake_head = new ListNode(INT_MIN); fake_head->next = head; ListNode * left = head; ListNode * right = head; ListNode * left_pre = fake_head; ListNode * right_pre = fake_head; while(right != NULL) { left = fake_head->next; left_pre = fake_head; while(left != right) { if(left->val > right->val) { right_pre->next = right->next; right->next = left; left_pre->next = right; right = right_pre->next; break; } else { left = left->next; left_pre = left_pre->next; } } if(left == right) { right = right->next; right_pre = right_pre->next; } } return fake_head->next; }
LeetCode:Insertion Sort List
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。