LeetCode 147. 对链表进行插入排序

目录

1.原题链接:

2.从前往后插入结点:

代码实现: 

3.提交结果:

4.读书分享:


1.原题链接:

147. 对链表进行插入排序

2.从前往后插入结点:

对于本题,我们可以以头结点作为参考,将头结点与原结点断开,然后遍历后续结点,将小于等于头结点值的结点头插在头结点前面,然后更换头结点;如果遍历到的结点的值大于头结点的值,就遍历排序了的链表,将结点插入进去。

断开头结点:

遍历到的结点的值小于等于头结点的值: 

遍历到的结点的值大于头结点的值: 

代码实现: 

typedef struct ListNode ListNode;
struct ListNode* insertionSortList(struct ListNode* head) {
    if(head==NULL||head->next==NULL)//当没有结点或只有一个结点
    {
        return head;
    }

    //将头结点与后续结点断开
    ListNode* sortHead=head;
    ListNode* cur=head->next;
    sortHead->next=NULL;

    while(cur)
    {
        ListNode* next=cur->next;//保存当前遍历到的结点的下一个结点的地址
        if(cur->val<=sortHead->val)//遍历到的结点的值比排序链表里的值都小
        {
            cur->next=sortHead;
            sortHead=cur;
            cur=next;
        }
        else
        {
            //存储两个指针,方便前插
            ListNode* sortPrev=sortHead;
            ListNode* sortCur=sortHead->next;
            while(sortCur)
            {
                if(sortCur->val>cur->val)//当排序链表里有值更大的结点时
                {
                    sortPrev->next=cur;
                    cur->next=sortCur;
                    break;
                }
                sortPrev=sortCur;
                sortCur=sortCur->next;
            }
            //当cur所指向的结点的值比排序链表里的值都大,尾插
            sortPrev->next=cur;
            cur->next=sortCur;//sortCur为NULL
            cur=next;
        }
    }
    return sortHead;      
}

3.提交结果:

4.读书分享:

 《道德经·第四十九章》:

圣人常无心,以百姓心为心。

善者,吾善之,不善者,吾亦善之;德善。

信者,吾信之,不信者,吾亦信之:德信。

圣人在天下,歙歙(xī)焉,为天下浑其心。

百姓皆注其耳目,圣人皆孩之。

解释:

圣人没有私心,以百姓之心为心。

善良的人,圣人善待于他,不善良的人,圣人也善待于他;结果可以得到共同善良的效果。

诚信的人,圣人诚信于他,不诚信的人,圣人也诚信于他;结果可以得到共同诚信的效果。

圣人治理天下,不怀私心偏见,使人民之心归于淳朴。

人民都倾注其听力以倾听他的教诲,都倾注其视力以模仿他的品行,而圣人把教育培养人民视为自己的天职和使命,就像父母对待自己的孩子一样。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/608331.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Leetcode】八大排序

总述 插入排序&#xff1a;直接插入排序&#xff1b;希尔排序&#xff1b; 选择排序&#xff1a;简单选择排序&#xff1b;堆排序&#xff1b; 交换排序&#xff1a;冒泡排序&#xff1b;快速排序&#xff1b; 归并排序&#xff1b; 桶排序/基数排序&#xff1b; 直接插入排序 …

NVIDIA Omniverse Cloud API支持数字孪生开发,可解决复杂AI问题 | 最新快讯

在全球范围内&#xff0c;价值超过 50 万亿美元的重工业市场&#xff0c;正在竞相实现数字化。 基于此&#xff0c;为帮助数字孪生技术更好地赋能千行百业&#xff0c;AI 企业 NVIDIA 在架构底层算力的同时&#xff0c;也搭建了 NVIDIA AI Enterprise 和 Omniverse 两大平台。 …

【隧道篇 / WAN优化】(7.4) ❀ 03. WAN优化的原理 ❀ FortiGate 防火墙

【简介】相信对WAN优化感兴趣的人都会有疑问&#xff0c;WAN优化真的有作用吗&#xff1f;如果真的有作用&#xff0c;那是根据什么原理呢&#xff1f;让我们来更深入的了解一下。 客户端和服务器端 其实很多人在一开始看到WAN优化这个词&#xff0c;就自然的以为上网速度太慢&…

基于51单片机的智能垃圾桶仿真设计( proteus仿真+程序+设计报告+原理图+讲解视频)

这里写目录标题 1. 主要功能&#xff1a;2. 讲解视频&#xff1a;3. 仿真4. 程序代码5. 设计报告6. 原理图7. 设计资料内容清单资料下载链接&#xff1a; 基于51单片机智能垃圾桶仿真设计( proteus仿真程序设计报告原理图讲解视频&#xff09; 仿真图proteus8.9及以上 程序编译…

ABB RobotStudio学习记录(一)新建工作站

RobotStudio新建工作站 最近遇到 虚拟示教器和 Rapid 代码不能控制 视图中机械臂的问题&#xff0c;其实是由于机械臂和工作站不匹配。以下是解决方法。 名称版本Robot Studio6.08 新建一个”空工作站“&#xff1b; 在目标位置新建一个目标文件夹 C:\solution\test&#xff0…

鸿蒙内核源码分析(文件概念篇) | 为什么说一切皆是文件

什么是文件 不说清楚什么是文件就说不清楚文件系统,更说不清楚内核是如何管理和为什么要这么来管理文件的。现代操作系统为解决信息能独立于进程之外被长期存储引入了文件,将文件抽象成一个宽泛的概念,把文档、目录&#xff08;文件夹&#xff09;、键盘、监视器、硬盘、可移动…

视频监控平台:交通运输标准JTT808设备SDK接入源代码函数分享

目录 一、JT/T 808标准简介 &#xff08;一&#xff09;概述 &#xff08;二&#xff09;协议特点 1、通信方式 2、鉴权机制 3、消息分类 &#xff08;三&#xff09;协议主要内容 1、位置信息 2、报警信息 3、车辆控制 4、数据转发 二、代码和解释 &#xff08;一…

C语言leetcode刷题笔记1

C语言leetcode刷题笔记1 第1题&#xff1a;136.只出现一次的数字两次遍历&#xff08;O(numsSize^2)&#xff09;位运算 第2题&#xff1a;202.快乐数快慢指针记录历史数据 第3题&#xff1a;53.最大子数组和暴力求解&#xff08;超时&#xff09;动态规划分治 第1题&#xff1…

机器学习初学者 6 个核心算法!建议收藏,反复观看!

今天再来介绍机器学习算法的基本概念和适用场景&#xff01; 首先&#xff0c;引用一句英国统计学家George E. P. Box的名言&#xff1a;All models are wrong, but some are useful. 没有哪一种算法能够适用所有情况&#xff0c;只有针对某一种问题更有用的算法。 也就是说&…

【新版系统架构】知识点背诵默写本

前言 系统架构考试在即&#xff0c;想要考试的人肯定感受到了沉甸甸的压力和紧迫感&#xff0c;脑海中不断闪过知识点的画面&#xff0c;却让人有些头昏脑胀&#xff0c;发现很难完全记住&#xff0c;这个考试很难&#xff0c;知识点很多。这次我在准备考试的同时&#xff0c;…

Android GPU渲染屏幕绘制显示基础概念(1)

Android GPU渲染屏幕绘制显示基础概念&#xff08;1&#xff09; Android中的图像生产者OpenGL&#xff0c;Skia&#xff0c;Vulkan将绘制的数据存放在图像缓冲区中&#xff0c;Android中的图像消费SurfaceFlinger从图像缓冲区将数据取出&#xff0c;进行加工及合成。 Surface…

华为云CodeArts API专场直播来袭!——探索API全生命周期管理新趋势

API的全生命周期管理是否让你摸不清头脑&#xff1f;你是否对API的前沿技术和应用充满了好奇&#xff0c;渴望一探究竟&#xff1f; 华为云PaaS服务即将在5月10日16:00&#xff0c;为你带来一场别开生面的CodeArts API专场直播活动&#xff01; 你可以在轻松愉快的氛围中&…

小巧简单实用的Linux端口转发工具Rinetd

Linux下实现端口转发有很多种方法&#xff0c;尤其是在可以联网的情况下&#xff0c;更是容易。最近在资源受限的定制系统中&#xff0c;找到一个方便离线安装和使用的端口转发工具Rinetd&#xff0c;安装包仅几十K&#xff0c;而且有很多版本的Linux发行系统的支持。 1、安装…

水质监测设备预警系统

随着工业化进程的加快和城市化水平的提高&#xff0c;水质安全问题愈发受到社会各界的广泛关注。为了确保水资源的清洁与安全&#xff0c;水质监测设备预警系统成为了不可或缺的利器。在这个背景下&#xff0c;HiWoo Cloud平台凭借其先进的技术和卓越的性能&#xff0c;为水质监…

【已解决】直接在远程新增文件本地再提交报Merge branch ‘master‘ of

【已解决】直接在远程新增文件本地再提交报Merge branch ‘master’ of … 1、问题产生背景 直接在远程仓库新建了md文件&#xff0c;本地库修改了文件已添加到暂存区之后再提交报错 2、分析 远程新建文件产生变更&#xff0c;版本号与本地拿到的不一致&#xff0c;本地再次提…

Docker 安装的MySQL迁移数据库

1. 导出数据库 docker ps :查看数据库对应的 CONTAINER ID docker exec -it id /bin/bash : 进入到mysql的docker实例中 cd /usr/bin : 进入到bin目录 mysqldump -u root -p123456 study > /root/study_backup0509.sql :使用mysqldump备份库&#xff0c;注意密码与-p之间…

PopChar for Mac v10.1激活版:特殊字符输入工具

PopChar for Mac是一款专为Mac用户设计的字符输入工具&#xff0c;其简单直观的功能使得查找和插入特殊字符变得轻而易举。 PopChar for Mac v10.1激活版下载 首先&#xff0c;PopChar为Mac提供了访问所有字体字符的能力&#xff0c;包括那些难以通过键盘直接输入的字符。用户只…

【3dmax笔记】032: 编辑顶点

一、编辑顶点概述 (1)启动安装好的3dmax软件。 (2)选择顶视图,用图形画出一个矩形。 (3)选择矩形,右击鼠标,将矩形转换成可编辑样条线。 (4)进入顶点层级。 展开可编辑样条线,选择顶点层级(快捷键为1,在不展开样条线的情况下也可以选择顶点层级)。选择后,可以…

postman介绍、安装、使用、功能特点、注意事项

Postman是一款流行的API开发工具&#xff0c;它提供了丰富的功能&#xff0c;包括创建、测试、调试和文档化API。本文将介绍Postman的安装、使用方法&#xff0c;以及其功能特点和注意事项。 1. 介绍 Postman是一款用于构建、测试和调试API的工具&#xff0c;它提供了用户友好的…

串口通信---了解

1 串口接线方式 RXD&#xff1a;数据输入引脚&#xff0c;数据接受&#xff1b;STC89系列对应P3.0口 TXD&#xff1a;数据发送引脚&#xff0c;数据发送&#xff1b;STC89系列对应P3.1口 接线方式 串口编程要素 输入/输出数据缓冲器叫做SBUF&#xff0c;都用99H地址码&#x…
最新文章