日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++ 不插入重复元素但也不排序_【每日一题】125. 对链表进行插入排序

發布時間:2023/12/10 c/c++ 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ 不插入重复元素但也不排序_【每日一题】125. 对链表进行插入排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
關注我們獲取更多計算機考研信息

對鏈表進行插入,

插入排序算法:

插入排序是迭代的,每次只移動一個元素,直到所有元素可以形成一個有序的輸出列表。

每次迭代中,插入排序只從輸入數據中移除一個待排序的元素,找到它在序列中適當的位置,并將其插入。

重復直到所有輸入數據插入完為止。

示例 1:

輸入: 4->2->1->3

輸出: 1->2->3->4

示例 2:

輸入: -1->5->3->4->0

輸出: -1->0->3->4->5

……? 思考時間……

如果你想好答案了

請查看代碼實現

代碼實現

class?Solution?{
????public?ListNode?insertionSortList(ListNode?head)?{
????????if(head?==?null)return?head;??//判空

????????ListNode?pre?=?head;??????????//雙指針維護前序
????????ListNode?cur?=?head.next;

????????while(cur?!=?null){

????????????if(cur.val?>=?pre.val){???//如果當前結點比上一個節點大,就沒必要移動了,
????????????????pre?=?pre.next;???????//只需要移動一位當前節點和維護的前序節點。
????????????????cur?=?cur.next;
????????????????continue;
????????????}

????????????pre.next?=?cur.next;?????//?不然的話,根據題意,把需要重定位的節點獨立出來。
????????????cur.next?=?null;

????????????if(cur.val?//特殊處理,如果當前節點比head節點還小,那就直接插在頭節點前,更新head
????????????????cur.next?=?head;
????????????????head?=?cur;
????????????????cur?=?pre.next;
????????????????continue;
????????????}

????????????ListNode?c?=?head.next;???//如果以上既不比上一個節點大,又不比頭節點小,那就是中間常規插入了。
????????????ListNode?p?=?head;
????????????while(cur.val?>?c.val){???//找到合適的插入位置,p--->c????p--->??插這??--->c
????????????????p?=?c;
????????????????c?=?c.next;
????????????}

微信關注“字節408考研”,

免費獲取各院校計算機軟件考研信息與專業課資料!

總結

以上是生活随笔為你收集整理的c++ 不插入重复元素但也不排序_【每日一题】125. 对链表进行插入排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。