zoukankan      html  css  js  c++  java
  • 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 };

    我的笔记:

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

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

  • 相关阅读:
    推荐Windows下SVN服务器端和客户端工具软件
    QT的一些小知识
    Qt
    Qt
    ADB
    HTTP
    Python
    项目附
    项目
    架构
  • 原文地址:https://www.cnblogs.com/john1015/p/13227512.html
Copyright © 2011-2022 走看看