C++删除链表中间节点的方法
2019/7/10 22:48:00
本文主要是介绍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++删除链表中间节点的方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享