147. 对链表进行插入排序(单链表(排序:删除+后插))

该博客介绍了如何使用C++实现对不带头结点的链表进行升序插入排序。通过建立伪头结点,将链表分为有序和无序两部分,逐个将无序节点插入到有序链表中,确保最终链表排序完成。
摘要由CSDN通过智能技术生成
  • 题目链接:147. 对链表进行插入排序

  • 考查知识:单链表(排序:删除+后插)

  • 题意描述:给定不带头结点的链表,对其按升序插入排序并返回排序后的链表 。

  • 思路简析:

    • 建立链表伪头结点,方便对第一个结点进行前插,p为有序链链尾指针(初始化为第一个结点head),q为无序链链首指针(即p直接后继,遍历过程中根据p的位置进行实时更新
    • 然后在无序链还有结点的情况下遍历无序链,如果无序链链首结点q权值比有序链尾结点p权值小,则让有序链尾指针p后移(当且仅当这种情况下有序链尾指针p后移!!!)
    • 否则删除该无序链首结点,在整个有序链从头结点开始,找应该插入位置的前驱pre,做前插操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值