这篇文章主要介绍了C++删除链表中间节点的方法,结合实例形式分析了链表删除中间节点的具体思路与实现技巧,但愿在学习上有帮助到你们。node
给定链表头结点head,实现删除链表的中间节点函数。程序员
快慢指针,快指针走两步,慢指针一步。 算法
当快指针走到终点时,慢指针正好是链表中间节点,删除此节点便可。编程
typedef struct Node编程语言
{函数
int data;学习
struct Node* next;spa
}node, *pLinkedList;指针
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”
编程学习书籍:
编程学习视频: