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


相关推荐: Laravel如何配置和使用缓存?(Redis代码示例)  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  Laravel如何实现事件和监听器?(Event & Listener实战)  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】  Linux系统运维自动化项目教程_Ansible批量管理实战  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  Laravel怎么调用外部API_Laravel Http Client客户端使用  如何用西部建站助手快速创建专业网站?  ,交易猫的商品怎么发布到网站上去?  Laravel如何实现用户密码重置功能?(完整流程代码)  Laravel PHP版本要求一览_Laravel各版本环境要求对照  如何在新浪SAE免费搭建个人博客?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  开心动漫网站制作软件下载,十分开心动画为何停播?  在centOS 7安装mysql 5.7的详细教程  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  如何快速登录WAP自助建站平台?  如何快速搭建二级域名独立网站?  如何自定义建站之星模板颜色并下载新样式?  如何在阿里云完成域名注册与建站?  如何快速搭建个人网站并优化SEO?  独立制作一个网站多少钱,建立网站需要花多少钱?  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  昵图网官方站入口 昵图网素材图库官网入口  linux写shell需要注意的问题(必看)  Laravel Docker环境搭建教程_Laravel Sail使用指南  Android自定义listview布局实现上拉加载下拉刷新功能  如何在腾讯云服务器快速搭建个人网站?  太平洋网站制作公司,网络用语太平洋是什么意思?  如何在自有机房高效搭建专业网站?  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  个人摄影网站制作流程,摄影爱好者都去什么网站?  如何快速查询网站的真实建站时间?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  如何在IIS服务器上快速部署高效网站?  在线制作视频网站免费,都有哪些好的动漫网站?  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  大连 网站制作,大连天途有线官网?  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  如何用腾讯建站主机快速创建免费网站?  WEB开发之注册页面验证码倒计时代码的实现  如何快速查询域名建站关键信息?  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  Android利用动画实现背景逐渐变暗  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  再谈Python中的字符串与字符编码(推荐)  如何彻底删除建站之星生成的Banner?  java ZXing生成二维码及条码实例分享