C++实现单链表删除倒数第k个节点的方法

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

本文实例讲述了C++实现单链表删除倒数第k个节点的方法。分享给大家供大家参考,具体如下:

题目:

删除单链表中倒数第k个节点

解题思路及算法代码:

标尺法,定义两个指针指向链表头结点,先让一个走k步,然后两个指针同时开始走,当先走的指针走到末尾时,后走的指针指向的结点就是需要删除的结点。

单链表结构定义:

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

删除倒数第K结点操作代码:

//head表示头结点
Node* removeLastKthNode(pLinkedList head, int k)
{
  if (NULL == head->next || k < 1)
    return head;
  pLinkedList cur = head; //1号指针
  pLinkedList ret = head; //2号指针,指向待删除节点
  pLinkedList pre = NULL; //pdel待删除节点的前一个节点
  /*
  head  1  2  3  4  5
  cur
  ret
  */
  while (k > 0 && cur != NULL)
  {
    k--;
    cur = cur->next;
  }
  //当链表走到终点时,k仍然大于0,可知k值大于链表长度
  if (k > 0 && cur == NULL)
  {
    cout << "k值大于链表长度" << endl;
    return head;
  }
  //k == 0时,1号指针和2号指针同时走,ret即为待删除的节点
  if (k == 0)
  {
    while (cur != NULL)
    {
      pre = ret;
      cur = cur->next;
      ret = ret->next;
    }
    /*k = 2时
    head  1    2   3    4   5  NULL
               pre   ret     cur
    即要求删除ret节点
    */
    pre->next = ret->next;
    free(ret);
    ret = NULL;
    return head;
  }
}

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


# C++  # 单链表  # 删除  # 节点  # C++链表节点的添加和删除介绍  # C++实现LeetCode(237.删除链表的节点)  # 基于Python和C++实现删除链表的节点  # 剑指offer之C++语言实现链表(两种删除节点方式)  # C++删除链表中间节点的方法  # C++进阶练习删除链表的倒数第N个结点详解  # 链表  # 走到  # 给大家  # 即为  # 所述  # 先走  # 程序设计  # 先让  # 讲述了  # amp  # cout  # strong  # pdel  # brush  # class  # pre  # medium  # endl  # free  # int 


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


相关推荐: Java类加载基本过程详细介绍  新三国志曹操传主线渭水交兵攻略  北京网站制作公司哪家好一点,北京租房网站有哪些?  Laravel如何实现一对一模型关联?(Eloquent示例)  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  海南网站制作公司有哪些,海口网是哪家的?  Laravel如何使用Telescope进行调试?(安装和使用教程)  实例解析angularjs的filter过滤器  如何选择PHP开源工具快速搭建网站?  Android 常见的图片加载框架详细介绍  Android okhttputils现在进度显示实例代码  微信小程序 require机制详解及实例代码  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  如何在Ubuntu系统下快速搭建WordPress个人网站?  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  JavaScript如何实现类型判断_typeof和instanceof有什么区别  Python文本处理实践_日志清洗解析【指导】  如何在云指建站中生成FTP站点?  Laravel怎么连接多个数据库_Laravel多数据库连接配置  如何用西部建站助手快速创建专业网站?  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  长沙企业网站制作哪家好,长沙水业集团官方网站?  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  Android仿QQ列表左滑删除操作  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  PythonWeb开发入门教程_Flask快速构建Web应用  如何在宝塔面板创建新站点?  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  如何用景安虚拟主机手机版绑定域名建站?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  Laravel如何实现文件上传和存储?(本地与S3配置)  jquery插件bootstrapValidator表单验证详解  网站建设要注意的标准 促进网站用户好感度!  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  如何用5美元大硬盘VPS安全高效搭建个人网站?  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Laravel如何使用Collections进行数据处理?(实用方法示例)  iOS发送验证码倒计时应用  高性能网站服务器配置指南:安全稳定与高效建站核心方案  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  音响网站制作视频教程,隆霸音响官方网站?  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  Python高阶函数应用_函数作为参数说明【指导】  Laravel如何使用模型观察者?(Observer代码示例)