vlambda博客
学习文章列表

面试题之链表插入排序

原题:

so short

力哥解析:

对链表进行插入排序

插入排序初始是一个空容器,每遇到一个元素后,在容器中找到该元素应该插入的位置,将其插入即可

对于链表而言,首先初始化一个空链表即可,然后一个一个节点插入

上code:

class Solution {

public:

    ListNode* insertionSortList(ListNode* head) {

        auto header = new ListNode(INT32_MIN);

        while(head)

        {

            auto node = header;

            while(node->next && node->next->val < head->val)

                node = node->next;

            auto next = head->next;

            head->next = node->next;

            node->next = head;

            head = next;

        }

        head = header->next;

        delete header;

        return head;

    }

};