LeetCode:Insertion Sort List

来源:互联网 发布:数据库功能节点 编辑:程序博客网 时间:2024/06/05 07:46

题目描述:

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;}


0 0
原创粉丝点击