zoukankan      html  css  js  c++  java
  • leetcode

    题目:Insertion Sort List

    Sort a linked list using insertion sort.

    题目比较简单,就是对链表进行插入排序

    个人思路:

    1,用插入排序的方法来解就行,注意链表的处理,可以给原链表加个头结点来使得处理统一(我的代码没有加,懒得改了)

    代码:

     1 #include <stddef.h>
     2 
     3 struct ListNode
     4 {
     5     int val;
     6     ListNode *next;
     7     ListNode(int x) : val(x), next(NULL) {};
     8 };
     9 
    10 class Solution {
    11 public:
    12     ListNode *insertionSortList(ListNode *head) {
    13         if (!head)
    14         {
    15             return NULL;
    16         }
    17 
    18         ListNode *current = head->next;
    19         ListNode *currentBefore = head;
    20         ListNode *find = NULL;
    21         ListNode *findBefore = NULL;
    22 
    23         while (current)
    24         {
    25             find = head;
    26             while (find != current)
    27             {
    28                 if (current->val < find->val)
    29                 {
    30                     if (find == head) //当前结点小于头结点
    31                     {
    32                         currentBefore->next = current->next;
    33                         current->next = find;
    34                         head = current;
    35                         current = currentBefore->next;
    36                         break;
    37                     }
    38                     else
    39                     {
    40                         currentBefore->next = current->next;
    41                         current->next = find;
    42                         findBefore->next = current;
    43                         current = currentBefore->next;
    44                         break;
    45                     }
    46                 }
    47                 findBefore = find;
    48                 find = find->next;
    49             }
    50             if (find == current) //当前结点比前面结点都大,没有对链表做任何改变
    51             {
    52                 currentBefore = current;
    53                 current = current->next;
    54             }
    55         }
    56 
    57         return head;
    58     }
    59 };
    View Code

    网上的思路基本是一样的

  • 相关阅读:
    [POJ1743]Musical Theme
    [HDU5343]MZL's Circle Zhou
    [ZJOI2015]诸神眷顾的幻想乡
    [SDOI2016]生成魔咒
    [POI2000]Repetitions
    [SPOJ-NSUBSTR]Substrings
    [SPOJ-LCS2]Longest Common Substring II
    [SPOJ-LCS]Longest Common Substring
    [SDOI2010]地精部落
    [HNOI2003]消防局的设立
  • 原文地址:https://www.cnblogs.com/laihaiteng/p/3948937.html
Copyright © 2011-2022 走看看