当前位置:网站首页>Leetcode刷题——对链表进行插入排序
Leetcode刷题——对链表进行插入排序
2022-08-05 05:17:00 【游辞】

题解:(想说的都在注释里)
struct ListNode* insertionSortList(struct ListNode* head){
if(head==NULL || head->next == NULL)
{
return head;//如果为空或者只有一个节点,则不需要排序
}
// 1、初始条件
struct ListNode* sortHead = head;//设置一个节点记录第一个节点
struct ListNode* cur = head->next;//设置一个cur连接原原头结点的下一节点
sortHead->next = NULL;//将第一第二个节点断开,成为两部分
while(cur) // 2、终止条件
{
//3、迭代条件
struct ListNode* next = cur->next;
//将cur节点插入前面的有序区间
struct ListNode* p = NULL, *c = sortHead;//用p记录前一节点,c记录当前位置
while(c)
{
if(cur->val < c->val) //插入值小于当前节点值,则开始插入
{
break; //将插入节点为最大值节点(用尾插)与正常情况结合处理
}
else //如果比较大于,则移动前后指针
{
p = c;
c = c->next;
}
}
//可获得三种节点地址
//1、NULL说明 插入节点值最小(用头插)
//2、节点c非空 说明插入值在链表中间
//3、节点c为空 说明插入节点值最大(用尾插)
if(p == NULL)//如果前驱节点为空,则用头插
{
cur->next = c;
sortHead = cur;
}
else //二三情况结合处理
{
p->next = cur;
cur->next = c;
}
//迭代cur当前节点
cur = next;
}
return sortHead;
}
边栏推荐
猜你喜欢

LeetCode刷题之第746题

【Shell编程】第一章:子串

CVPR2020 - 自校准卷积

四、Web场景之静态资源配置原理

Tensorflow steps on the pit notes and records various errors and solutions
![[Intensive reading of the paper] R-CNN's Bounding box regression problem is detailed](/img/ef/a058ec08bd0a6313e3610a4ebc9685.png)
[Intensive reading of the paper] R-CNN's Bounding box regression problem is detailed

面向小白的深度学习代码库,一行代码实现30+中attention机制。

C语言—三子棋的实现

C语言入门笔记 —— 函数(1)

Facial Motion Capture 调研
随机推荐
数控直流电源
哥廷根大学提出CLIPSeg,能同时作三个分割任务的模型
AIDL detailed explanation
C语言入门笔记 —— 函数(1)
[Database and SQL study notes] 10. (T-SQL language) functions, stored procedures, triggers
2021电赛资源及经验总结
LeetCode刷题之第701题
TinyFlashDB:一种超轻量的可纠错的通用单片机flash存储方案
华科提出首个用于伪装实例分割的一阶段框架OSFormer
dataframe 常用操作
电子产品量产工具(4)-UI系统实现
全尺度表示的上下文非局部对齐
神经网络也能像人类利用外围视觉一样观察图像
1004 成绩排名 (20 分)
C语言联合体union占用空间大小问题
亲身实感十多年的面试官面试的题目
IJCAI 2022|边界引导的伪装目标检测模型BGNet
LeetCode刷题之第74题
【ts】typescript高阶:模版字面量类型
Machine Learning (1) - Machine Learning Fundamentals