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

这篇文章主要介绍了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++丨删除链表中间节点的方法详解

 

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

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

编程学习书籍:

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

 

编程学习视频:

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

 

原文链接: https://www.cnblogs.com/mu-ge/p/14278136.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

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

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/207321

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午10:52
下一篇 2023年2月12日 下午10:53

相关推荐