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

—-想了解C++删除链表中间节点的方法分享的全部内容且更多的C语言教程关注<计算机技术网(www.ctvol.com)!!>

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++程序设计有所帮助。

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/488122.html

(0)
上一篇 2020年11月12日
下一篇 2020年11月12日

精彩推荐