C++删除链表中间节点的方法

 更新时间:2017年05月09日 14:41:05   作者:难免有错_  
这篇文章主要介绍了C++删除链表中间节点的方法,结合实例形式分析了链表删除中间节点的具体思路与实现技巧,需要的朋友可以参考下

本文实例讲述了C++删除链表中间节点的方法。分享给大家供大家参考,具体如下:

题目:

给定链表头结点head,实现删除链表的中间节点函数。

解题思路及代码:

快慢指针,快指针走两步,慢指针一步。
当快指针走到终点时,慢指针正好是链表中间节点,删除此节点即可。

链表结构定义:

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

算法C++代码:

Node* removeMidNode(pLinkedList head)
{
  if (head->next == NULL || head == NULL)
    return head;
  if (head->next->next == NULL)
    return head->next;
  pLinkedList fast = head;
  pLinkedList slow = head;
  pLinkedList pre = NULL;
  /*
  head  1    2    3    4    5
  pre   slow  fast
  */
  //1个节点
  if (head->next->next == NULL)
    return head->next;
  while (fast->next != NULL && fast->next->next != NULL)
  {
    pre = slow;
    fast = fast->next->next;
    slow = slow->next;
  }
  //此时fast已到终点,slow为中间节点,pre为中间节点前一个节点
  pre->next = slow->next;
  free(slow);
  slow = NULL;
  return head;
}

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

相关文章

  • C语言练习题:自由落体的小球简单实例

    C语言练习题:自由落体的小球简单实例

    下面小编就为大家带来一篇C语言练习题:自由落体的小球简单实例。小编觉得挺不错的,现在分享给大家,也给大家做个参考,一起跟随小编过来看看吧
    2016-05-05
  • C++using声明和using编译指令

    C++using声明和using编译指令

    这篇文章主要介绍了C++using声明和using编译指令,C++当中提供了两种机制来简化对名称空间中名称的使用。using声明使特定的标识符keys,using编译指令使整个名称空间可用。下面我们就来看看这两种机制的相关资料吧,需要的小伙伴可以参考一下
    2021-12-12
  • 位运算实现十进制转换为二进制

    位运算实现十进制转换为二进制

    这篇文章主要介绍了位运算实现十进制转换为二进制的相关资料,需要的朋友可以参考下
    2015-03-03
  • c++调用动态库LNK2019和LNK1120无法解析的外部命令

    c++调用动态库LNK2019和LNK1120无法解析的外部命令

    本文主要介绍了c++调用动态库LNK2019和LNK1120无法解析的外部命令, 出现这个错误一般都是函数只找到声明但没有实现,或者是少了什么链接库,下面就来解决一下
    2024-06-06
  • 用c++实现x的y次幂的代码

    用c++实现x的y次幂的代码

    以下实例是对使用c++实现x的y次幂的解决方法进行了介绍。需要的朋友参考下
    2013-05-05
  • C和C++11之enum枚举的具体使用方法

    C和C++11之enum枚举的具体使用方法

    这篇文章主要介绍了C和C++11之enum枚举的具体使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • OpenCV实现平均背景法

    OpenCV实现平均背景法

    这篇文章主要为大家详细介绍了OpenCV实现平均背景法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • C语言实现随机生成6位数密码

    C语言实现随机生成6位数密码

    这篇文章主要为大家详细介绍了如何使用C语言实现一个简单而实用的随机密码生成器,该生成器将生成包含字母、数字和特殊字符的随机密码,有需要的小伙伴可以参考下
    2023-11-11
  • C/C++ 开发神器CLion使用入门超详细教程

    C/C++ 开发神器CLion使用入门超详细教程

    这篇文章主要介绍了C/C++ 开发神器CLion使用入门超详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • C/C++利用栈和队列实现停车场管理系统

    C/C++利用栈和队列实现停车场管理系统

    数据结构的课程设计一般都不是很好理解,今天小编为大家总结了一下c和c++版本的常见栈和队列的的停车场管理程序,需要的小伙伴可以参考一下
    2022-06-06

最新评论