首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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;

}

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210114A0ACRV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券