首页 > 其他 > 详细

LeetCode:Insertion Sort List

时间:2014-11-21 10:38:17      阅读:179      评论:0      收藏:0      [点我收藏+]

题目描述:

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

原文:http://blog.csdn.net/yao_wust/article/details/41345095

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!