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

C++删除链表中间节点的方法,第1张

概述本文实例讲述了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++程序设计有所帮助。

总结

以上是内存溢出为你收集整理的C++删除链表中间节点的方法全部内容,希望文章能够帮你解决C++删除链表中间节点的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1245176.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存