insertion-sort-list 插入法排序链表

题目:

使用插入排序对链表进行排序。
Sort a linked list using insertion sort.

示例:

输入:{3,2,4}    输出:{2,3,4}

代码:

复制代码
 1 /**
 2  * struct ListNode {
 3  *  int val;
 4  *  struct ListNode *next;
 5  * };
 6  */
 7  
 8 class Solution {
 9 public:
10     /**
11      *
12      * @param head ListNode类
13      * @return ListNode类
14      */
15     ListNode* insertionSortList(ListNode* head) {
16         if(head == NULL) return head;
17         ListNode* dumy = new ListNode(INT_MIN);
18         ListNode* cur = head;
19         ListNode* pre = dumy;
20         while(cur != NULL){
21             pre = dumy; //从新链表的头节点开始查找插入位置
22             while(pre->next != NULL && cur->val > pre->next->val)
23                 pre = pre->next;
24             ListNode* next = cur->next; //记录后继结点
25             cur->next = pre->next; //插入
26             pre->next = cur;
27             cur = next;
28         }
29         return dumy->next;
30     }
31 };
复制代码

我的笔记:

  由于链表的存储格式是不连续的,每个节点都是一个新的地址。所以在做插入排序的操作时就会容易很多,直接对逆序结点进行操作即可。

  上述方法为浅拷贝,未更改结点的存储地址,只是更改了存储顺序。

posted @   John_yan15  阅读(151)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示