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排序
- 連結串列-插入排序排序
- 建立連結串列並進行增加、刪減操作
- 147. Insertion Sort List(插入排序)排序
- 單連結串列增刪改查和歸併插入排序排序
- 連結串列-雙向連結串列
- 連結串列-迴圈連結串列
- 連結串列面試題(二)---連結串列逆序(連結串列反轉)面試題
- 連結串列4: 迴圈連結串列
- 連結串列-單連結串列實現
- 連結串列入門與插入連結串列
- (連結串列)連結串列的排序問題排序
- PHP 使用連結串列實現對映PHP
- 連結串列
- 雙連結串列插入排序例項程式碼排序
- javascript中的連結串列結構—雙向連結串列JavaScript
- Leetcode_86_分割連結串列_連結串列LeetCode
- 【LeetCode】->連結串列->通向連結串列自由之路LeetCode
- php連結串列PHP
- 連結串列操作
- 連結串列逆序
- 2、連結串列
- 誰說有序連結串列不能進行二分查詢,只是需要進化而已?!
- 【圖解連結串列類面試題】移除連結串列元素圖解面試題
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- 連結串列以及golang介入式連結串列的實現Golang
- Linux核心連結串列-通用連結串列的實現Linux
- 資料結構-單連結串列、雙連結串列資料結構
- 反轉連結串列、合併連結串列、樹的子結構
- 資料結構與演算法——連結串列 Linked List(單連結串列、雙向連結串列、單向環形連結串列-Josephu 問題)資料結構演算法
- 【LeetCode-連結串列】面試題-反轉連結串列LeetCode面試題
- 連結串列專題——面試中常見的連結串列問題面試
- LeetCode-Python-86. 分隔連結串列(連結串列)LeetCodePython
- 連結串列面試題(七)---合併兩個有序連結串列面試題
- 資料結構實驗之連結串列九:雙向連結串列資料結構
- 資料結構實驗之連結串列二:逆序建立連結串列資料結構
- 資料結構--陣列、單向連結串列、雙向連結串列資料結構陣列