leetcode.147 对链表进行插入排序

250 阅读1分钟

题源

解题思路

利用插入排序的思维

  • 将首个节点作为有序链表;
  • 以首个节点作为当前节点,当前节点与下一个节点作比较;
  • 若下一个节点比当前节点小,则将此节点从链表中删除放在缓存区,将缓存区中的节点插入到有序链表中;
  • 若下一个节点不比当前节点小,则将当前移动往下一个节点挪一位; 如何实现删除某节点,放在缓存区
  • 开辟一个临时变量存储该节点;
  • 当前节点指向该节点的下一个节点;

如何实现缓存区节点插入有序链表

  • 有序节点头结节点出发遍历有序节点;
  • 若有序节点的节点大于缓存区节点,则将临时节点指向有序节点的下一个节点,有序节点指向临时节点;

哑节点存在的意义

  • 哑节点的下一个节点为头结点,即能实现dummyHead.next为有序链表的数值,而非有序链表的存储结构。

代码实现

image.png