您的位置:首页 > 其它

链表插入排序

2017-03-27 22:37 183 查看
描述:用插入排序对链表排序

样例:Given 1->3->2->0->null, return 0->1->2->3->null

解题思路:另外创造一个新的链表,为一个有序链表。将被排序的元素与顺序表当中的元素进行逐一比较,找到最后一个比被排序元素小的那一个元素,然后将此元素插入到那个元素的后面。

代码:/**

 * Definition of ListNode

 * class ListNode {

 * public:

 *     int val;

 *     ListNode *next;

 *     ListNode(int val) {

 *         this->val = val;

 *         this->next = NULL;

 *     }

 * }

 */

class Solution {

public:

    /**

     * @param head: The first node of linked list.

     * @return: The head of linked list.

     */

    ListNode *insertionSortList(ListNode *head) {

        // write your code here

        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->nex
4000
t;

            head->next = node->next;

            node->next = head;

            head = temp;

        }

        return dummy->next;

    }

};

做题感想:创建一个dummy 指针用来记录头指针的位置,体会插入排序的意义。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: