對鍊錶進行插入排序。
插入排序的動畫演示如上。從第乙個元素開始,該鍊錶可以被認為已經部分排序(用黑色表示)。
每次迭代時,從輸入資料中移除乙個元素(用紅色表示),並原地將其插入到已排好序的鍊錶中。
插入排序演算法:
插入排序是迭代的,每次只移動乙個元素,直到所有元素可以形成乙個有序的輸出列表。
每次迭代中,插入排序只從輸入資料中移除乙個待排序的元素,找到它在序列中適當的位置,並將其插入。
重複直到所有輸入資料插入完為止。
示例 1:
輸入:4->2->1->3輸出:1->2->3->4示例 2:
輸入:-1->5->3->4->0輸出:-1->0->3->4->5class solution
listnode* newhead=new listnode(-1);//常用技巧,新建頭結點
newhead->next=head;
listnode* pre=newhead;//這個指標的目的是每一次找插入的位置都要從頭結點開始遍歷
listnode* current=head;//這個指標是當前我們需要操作的節點前乙個節點
while(current)
listnode* temp=pre->next; //為什麼不是current呢,因為不一定要插入的位置正好是current的前面,但一定插入在pre的後面
pre->next=current->next;
current->next=current->next->next;
pre->next->next=temp;
pre=newhead;
}else
}return newhead->next;}};
鍊錶leetcode總結 python
鍊錶是經典的遞迴定義的資料結構,鍊錶相關的題目常常考察遞迴,翻轉鍊錶是其中的經典題目。在思考遞迴問題的時候,我們要從上到下思考 編寫乙個函式,使其可以刪除某個鍊錶中給定的 非末尾 節點,你將只 被給定要求被刪除的節點 node.val node.next.val node.next node.nex...
LeetCode 鍊錶題總結
最近花了幾天時間,將鍊錶題除帶鎖外的題目做完了,下面對鍊錶題部分題目進行總結和分析。1 鍊錶反轉 2 快慢指標 遇到一些需要找到鍊錶的中點問題時,可能會有鍊錶長度為奇數或者偶數的情況,當長度為偶數時,模板裡面 prev 為第乙個中點,slow 為第二個中點,長度為奇數時 slow 為鍊錶的中點。1....
leetcode 反轉鍊錶問題總結
第一次被問反轉鍊錶是被位元組,我沒想出來。後來在劍指offer上面看到了,我沒做出來。在leetcode和牛客上遇見,是那麼的熟悉。今天的每日一題還是思路不清晰。我意識到,我是時候寫點什麼了。希望下次遇到的時候思路清晰,一招斃命。反轉鍊錶i 反轉鍊錶ii 反轉鍊錶i是把整個鍊錶都反轉,相對來說容易一...