zoukankan      html  css  js  c++  java
  • LeetCode(147) Insertion Sort List

    题目

    Sort a linked list using insertion sort.

    分析

    实现链表的插入排序

    注意:

    1. 程序入口的特殊输入判断处理!
    2. 节点的链接处理,避免出现断链!

    AC代码

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    
    class Solution {
    public:
        ListNode* insertionSortList(ListNode* head) {
            if (head == NULL || !head->next)
                return head;
    
            ListNode *p = head->next;
            head->next = NULL;
            //从头结点的下一节点开始,遍历插入排序
            while (p)
            {
                //保存p节点的后续节点
                ListNode *r = p->next;
    
                //判断是否应插入到头结点
                if (p->val < head->val)
                {
                    p->next = head;
                    head = p;
                }
                else{
                    //寻找p节点应插入位置的前驱
                    ListNode *pre = head;
                    while (pre->next && pre->next->val <= p->val)
                    {
                        pre = pre->next;
                    }
                    p->next = pre->next;
                    pre->next = p;
                }
                //循环下一节点的插入
                p = r;
            }//while
            return head;
        }
    };

    GitHub测试程序源码

  • 相关阅读:
    内存
    jmeter设置全局变量
    tomcat(1)
    JVM(一)
    内存溢出
    消息中间件
    上下文切换(二)
    平均负载(二)
    requests模块
    Pycharm如何配置Git
  • 原文地址:https://www.cnblogs.com/shine-yr/p/5214784.html
Copyright © 2011-2022 走看看