首页 > 编程语言 > 详细

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

时间:2021-01-14 17:19:27      阅读:1      评论:0      收藏:0      [点我收藏+]

这篇文章主要介绍了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”

编程学习书籍:

技术分享图片
 

编程学习视频:

技术分享图片
 

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

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

(0)
(0)
   
举报
评论 一句话评论(0
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号