当前位置: 首页 > news >正文

【单链表】05 有一个带头结点的单链表L,设计一个算法使其元素递增有序。

🕺作者: 主页

我的专栏
C语言从0到1
探秘C++
数据结构从0到1
探秘Linux
算法题上机准备

😘欢迎 ❤️关注 👍点赞 🙌收藏 ✍️留言

题目

有一个带头结点的单链表L,设计一个算法使其元素递增有序。

算法思路

解决办法有很多,如果只考虑链表的形式,所以是以下思路

  • 将整个链表分为两段链表,前一段链表是头节点和第一个节点,后一段链表是剩余节点
  • 后段链表作为类似参数的形式以插入的方式遍历比较插入前段链表

题解

void sortListAsc(LinkedList& L) {//如果链表为空,或者链表只有一个结点直接返回不需要排序if (L->next == NULL || L->next->next == NULL) {return;}//从第二个结点开始LNode* p = L->next->next;L->next->next = NULL;while (p != NULL) {LNode* next = p->next; //记录一下p的后继防止断链LNode* head = L->next; //head作为每次已排好序的部分链表中的首节点同时作为遍历指针LNode* pre = L; //遍历指针head的前一个结点while (head != NULL && p->data > head->data) {//如果不满足插入位置pre和head后移pre = pre->next;head = head->next;}p->next = head; //在head和pre之间插入ppre->next = p;p = next;//p后移重新遍历未进行排序的结点操作}
}
http://www.lryc.cn/news/396066.html

相关文章:

  • C语言入门基础题:奇偶 ASCII 值判断(C语言版)和ASCII码表,什么是ASCII码,它的特点和应用?
  • Numpy的广播机制(用于自动处理不同形状的数组)
  • 计算机图形学入门24:材质与外观
  • FTP、http 、tcp
  • 【虚幻引擎】UE4初学者系列教程开发进阶实战篇——生存游戏案例
  • 认识并理解webSocket
  • Scissor算法-从含有表型的bulkRNA数据中提取信息进而鉴别单细胞亚群
  • Linux-磁盘空间不足的清理步骤(详细版本)
  • go-redis源码解析:连接池原理
  • 蓝桥杯备赛攻略(怒刷5个月拿省一)
  • springboot项目jar包修改数据库配置运行时异常
  • 倒计时 2 周!CommunityOverCode Asia 2024 IoT Community 专题部分
  • 使用OpenCV在按下Enter键时截图并保存到指定文件夹
  • 汇川伺服 (4)FFT、机械特性、闭环、惯量、刚性、抑制振动
  • Unity3D中使用并行的Job完成筛选类任务详解
  • 汽车信息安全--欧盟汽车法规
  • @SpringBootApplication 注解
  • java项目总结4
  • JavaScript中的数组方法总结+详解
  • 环境变量Path
  • 基于jeecgboot-vue3的Flowable流程-集成仿钉钉流程(四)支持json和xml的显示
  • 【k8s安装redis】k8s安装单机版redis实现高性能高可用
  • Scala 数据类型
  • Java Executors类的9种创建线程池的方法及应用场景分析
  • LY/T 3359-2023 耐化学腐蚀高压装饰层积板检测
  • 【linux/shell】如何创建脚本函数库并在其他脚本中调用
  • Instruct-GS2GS:通过用户指令编辑 GS 三维场景
  • disql使用
  • SpringBoot Mybatis-Plus 日志带参数
  • 【WebGIS平台】传统聚落建筑科普数字化建模平台