首页 > 编程语言 > 详细

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

时间:2020-07-02 22:58:14      阅读:70      评论:0      收藏:0      [点我收藏+]

题目:

使用插入排序对链表进行排序。
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 };

我的笔记:

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

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

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

原文:https://www.cnblogs.com/john1015/p/13227512.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!