C++实现单链表按k值重新排序的方法

发布时间 - 2026-01-11 01:01:42    点击率:

本文实例讲述了C++实现单链表按k值重新排序的方法。分享给大家供大家参考,具体如下:

题目要求:

给定一链表头节点,节点值类型是整型。
现给一整数k,根据k将链表排序为小于k,等于k,大于k的一个链表。
对某部分内的节点顺序不做要求。

算法思路分析及代码(C)

思路:将链表分为小于k、等于k、大于k的三个链表,然后再合并。

链表结点定义:

typedef struct Node
{
  int data;
  struct Node* next;
}node, *pNode;

算法代码:

pNode sortLinkedList(pNode head, int k)
{
  pNode sHead = NULL;//小头
  pNode sTail = NULL;//小尾
  pNode eHead = NULL;//等头
  pNode eTail = NULL;//等尾
  pNode bHead = NULL;//大头
  pNode bTail = NULL;//大尾
  pNode temp = NULL;
  //拆分链表
  while (head != NULL)
  {
    temp = head->next;
    head->next = NULL;
    if (head->data < k)
    {
      if (!sHead){
        sHead = head;
        sTail = head;
      }
      else{
        sTail->next = head;
        sTail = head;
      }
    }
    else if (head->data == k)
    {
      if (!eHead){
        eHead = head;
        eTail = head;
      }
      else{
        eTail->next = head;
        eTail = head;
      }
    }
    else
    {
      if (!bHead){
        bHead = head;
        bTail = head;
      }
      else{
        bTail->next = head;
        bTail = head;
      }
    }
    head = temp;
  }
  //合并链表
  if (sTail)
  {
    sTail->next = eHead;
    eTail = (eTail == NULL ? sTail : eTail);
  }
  if (eTail)
  {
    eTail->next = bHead;
  }
  return sHead != NULL ? sHead : (eHead != NULL ? eHead : bHead);
}

希望本文所述对大家C++程序设计有所帮助。


# C++  # 单链表  # k值  # 排序  # 浅析C++中单链表的增、删、改、减  # C++中单链表的建立与基本操作  # C++ 单链表的基本操作(详解)  # 利用C++简单实现顺序表和单链表的示例代码  # C++使用模板实现单链表(类外实现)  # C++使用模板实现单链表  # C++实现单链表删除倒数第k个节点的方法  # C++实现单链表的构造  # C++单链表实现大数加法  # C++实现约瑟夫环的循环单链表  # 链表  # 小头  # 给大家  # 然后再  # 不做  # 所述  # 程序设计  # 整型  # 小尾  # 讲述了  # br  # gt  # strong  # lt  # class  # brush  # temp  # pre  # span  # int 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何用JavaScript实现文本编辑器_光标和选区怎么处理  Laravel如何配置Horizon来管理队列?(安装和使用)  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  html如何与html链接_实现多个HTML页面互相链接【互相】  如何用狗爹虚拟主机快速搭建网站?  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  HTML 中动态设置元素 name 属性的正确语法详解  如何快速使用云服务器搭建个人网站?  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  深圳网站制作平台,深圳市做网站好的公司有哪些?  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  js实现点击每个li节点,都弹出其文本值及修改  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  如何快速生成高效建站系统源代码?  Laravel PHP版本要求一览_Laravel各版本环境要求对照  如何快速生成可下载的建站源码工具?  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  原生JS实现图片轮播切换效果  Laravel如何使用Sanctum进行API认证?(SPA实战)  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  简单实现jsp分页  用v-html解决Vue.js渲染中html标签不被解析的问题  EditPlus中的正则表达式 实战(2)  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  高端智能建站公司优选:品牌定制与SEO优化一站式服务  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  Android Socket接口实现即时通讯实例代码  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  googleplay官方入口在哪里_Google Play官方商店快速入口指南  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  Bootstrap整体框架之JavaScript插件架构  EditPlus中的正则表达式 实战(4)  Laravel用户密码怎么加密_Laravel Hash门面使用教程  音响网站制作视频教程,隆霸音响官方网站?  如何用5美元大硬盘VPS安全高效搭建个人网站?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  如何快速搭建高效WAP手机网站吸引移动用户?  Laravel如何实现多对多模型关联?(Eloquent教程)  java获取注册ip实例  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  免费网站制作appp,免费制作app哪个平台好?  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制