147. 對連結串列進行插入排序
思路
思路很簡單:連結串列insert+插入排序。主要在於考察程式設計基本功,雷弟說指著指著就指到姥姥家了。。。
- 設定啞節點便於操作頭指標,newbie可以參考這篇博文,pre指標每次從頭遍歷,和待插入元素比較大小,小於則一直往後直到找出下一個節點大於待查節點的元素即插入點
- 連結串列插入,解釋略
- pre,cur返回現場,繼續任務。
程式碼
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode insertionSortList(ListNode head) {
if(head==null) return null;
ListNode dummy = new ListNode(-1);
//cur用來遍歷原始連結串列
ListNode cur = head;
//pre用來記錄待插元素的前一個節點
ListNode pre = dummy;
while(cur!=null){
//遍歷新連結串列,若節點元素小於待插入元素則繼續,直到找到應插之處的前面一個節點
while(pre.next!=null&&pre.next.val<cur.val) pre = pre.next;
//插入
ListNode save = cur.next;
cur.next = pre.next;
pre.next = cur;
//因為每次pre都要從頭比較待插元素
pre=dummy;
//cur繼續遍歷,斷了的線繼續連QAQ
cur=save ;
}
return dummy.next;
}
}
相關文章
- 力扣 147. 對連結串列進行插入排序力扣排序
- LeetCode-147-對連結串列進行插入排序LeetCode排序
- 連結串列-插入排序排序
- 建立連結串列並進行增加、刪減操作
- 連結串列 - 單向連結串列
- 連結串列-迴圈連結串列
- 連結串列-雙向連結串列
- 連結串列4: 迴圈連結串列
- 連結串列-雙向通用連結串列
- 連結串列-單連結串列實現
- 連結串列-雙向非通用連結串列
- 【LeetCode】->連結串列->通向連結串列自由之路LeetCode
- 連結串列入門與插入連結串列
- Leetcode_86_分割連結串列_連結串列LeetCode
- PHP 使用連結串列實現對映PHP
- 資料結構-單連結串列、雙連結串列資料結構
- 連結串列
- LeetCode-Python-86. 分隔連結串列(連結串列)LeetCodePython
- 單連結串列建立連結串列出現問題
- **203.移除連結串列元素****707.設計連結串列****206.反轉連結串列**
- php連結串列PHP
- 連結串列逆序
- 2、連結串列
- 連結串列(python)Python
- 重排連結串列
- 單連結串列
- 分割連結串列
- (一)連結串列
- 資料結構與演算法——連結串列 Linked List(單連結串列、雙向連結串列、單向環形連結串列-Josephu 問題)資料結構演算法
- 誰說有序連結串列不能進行二分查詢,只是需要進化而已?!
- 【LeetCode-連結串列】面試題-反轉連結串列LeetCode面試題
- 資料結構之連結串列:206. 反轉連結串列資料結構
- 反轉連結串列、合併連結串列、樹的子結構
- 對一個連結串列判斷是否有環
- [連結串列】2.輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭。[多益,位元組考過]
- 程式碼隨想錄第3天 | 連結串列 203.移除連結串列元素,707.設計連結串列,206.反轉連結串列
- 【圖解連結串列類面試題】移除連結串列元素圖解面試題
- 【圖解連結串列類面試題】環形連結串列圖解面試題