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

这篇文章主要介绍了C++删除链表中间节点的方法,结合实例形式分析了链表删除中间节点的具体思路与实现技巧,但愿在学习上有帮助到你们。node


 

题目:

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

解题思路及代码:

快慢指针,快指针走两步,慢指针一步。 算法

当快指针走到终点时,慢指针正好是链表中间节点,删除此节点便可。编程

链表结构定义:

typedef struct Node编程语言

{函数

  int data;学习

  struct Node* next;spa

}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”

编程学习书籍:


 

编程学习视频:

相关文章
相关标签/搜索