本文实例讲述了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++删除链表中间节点的方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)