Leetcode#147 Insertion Sort List

原题地址

 

心得:有关链表的题目,多用中间变量,代码写得清晰一点,适当注释

 

代码:

 1 ListNode *insertionSortList(ListNode *head) {
 2         if (!head) return NULL;
 3         
 4         ListNode *curr = head->next;
 5         ListNode *prev = head;
 6         while (curr) {
 7             ListNode *p = NULL;
 8             ListNode *c = head;
 9             // 寻找插入位置
10             while (c->val < curr->val) {
11                 p = c;
12                 c = c->next;
13             }
14             // 如果要插入的位置就是当前位置
15             if (c == curr) {
16                 prev = curr;
17                 curr = curr->next;
18             }
19             // 否则插入节点
20             else {
21                 prev->next = curr->next;
22                 curr->next = c;
23                 if (!p) // 如果带插入的位置是队首
24                     head = curr;
25                 else // 普通情况
26                     p->next = curr;
27                 curr = prev->next;
28             }
29         }
30         
31         return head;
32 }

 

转载于:https://www.cnblogs.com/boring09/p/4260465.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值