zoukankan      html  css  js  c++  java
  • 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”

    编程学习书籍:


     

    编程学习视频:


     
  • 相关阅读:
    遇见SQL(2)
    遇见SQL(1)
    JAVA自学笔记(10)—Stream流、方法引用
    JAVA自学笔记(9)——网络通信、函数式接口
    JAVA自学笔记(7)—文件
    JAVA自学笔记(6)—异常、线程、函数式编程
    Python--模块Module
    Python--软件目录结构
    Python--迭代器
    Python--生成器
  • 原文地址:https://www.cnblogs.com/mu-ge/p/14278136.html
Copyright © 2011-2022 走看看