• 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;

    }

    今天的分享就到这里了,有什么问题的地方欢迎大家指出。


     

    最后,如果你也想成为程序员,想要快速掌握编程,赶紧加入学习企鹅圈子

    里面有资深专业软件开发工程师,在线解答你的所有疑惑~编程语言入门“so easy”

    编程学习书籍:


     

    编程学习视频:


     
  • 相关阅读:
    ThinkPHP模版验证要注意的地方
    js关闭子页面刷新父页面
    js替换字符指定字符方法
    Ubuntu安装后的一些配置
    Docker入门
    RabbitMQ 基本概念和使用
    JAX-WS注解
    Linux 常用命令
    ubuntu16.04 搭建 Mysql服务器
    ubuntu 安装 Tomcat
  • 原文地址:https://www.cnblogs.com/mu-ge/p/14278136.html
Copyright © 2020-2023  润新知