新闻详情

新闻详情

首页 / 资讯中心 / 详情

GESP等级考试C++5级15-快慢指针1

发布时间:2026/9/29 8:18:54来源:尧图网络
GESP等级考试C++5级15-快慢指针1
在单链表中快慢指针是一种非常经典的算法技巧通常也被称为“龟兔赛跑算法”。它的核心思想设定两个指针从同一个起点出发以不同的速度遍历链表。在链表中使用快慢指针可以快速解决查找链表的中心结点以及倒数第i个结点的问题。1. 快速查找链表的中心结点1.1 原理使用快慢指针快速查找链表中心结点的思想是是定义两个指针初始时都指向链表首元节点。慢指针slow每次走 1 步快指针fast每次走 2 步。当快指针到达链表末尾时慢指针刚好走到链表中间。1.2 代码实现使用快慢指针快速查找链表中心结点的代码实现如图1所示。图1 使用快慢指针快速查找链表中心结点的代码其中findMiddleNode()函数是自定义函数其参数head表示链表的头结点。第22-25行代码对传入的头结点进行判断如果为NULL则直接返回NULL。第27-28行定义了结点的快慢指针。第30-34行代码通过while循环设置快慢指针的位置慢指针slow每次走 1 步快指针fast每次走 2 步。当循环结束时快指针到达链表末尾慢指针正好走到链表中间。1.3 代码运行效果在main()函数中使用图2所示代码调用findMiddleNode()函数。图2 调用findMiddleNode()函数的代码代码运行效果如图3所示。图3 代码运行效果从图3中可以看出如果链表中包含奇数个结点则findMiddleNode()函数返回的是链表的中心结点如果包含偶数个结点则findMiddleNode()函数返回的偏右的中心结点。1.4 完整代码快速查找链表中心结点的完整代码如下所示。#include iostream using namespace std; /* 在单链表中快慢指针Fast and Slow Pointers是一种非常经典的算法技巧通常也被称为“龟兔赛跑算法”。 它的核心思想设定两个指针从同一个起点出发以不同的速度遍历链表。 慢指针Slow每次移动 1 步slow slow-next。 快指针Fast每次移动 2 步fast fast-next-next。 */ struct Node { int data; Node* next; }; /* 查找链表的中心结点 如果链表中结点的个数为偶数则返回的是中心靠右的结点 */ Node* findMiddleNode(Node* head) { if (head NULL) { return NULL; } Node* slow head; Node* fast head; while(fast!NULL fast-next ! NULL)//注意循环条件 { slow slow-next; fast fast-next-next; } return slow; } Node *head, *p, *r;//r表示当前链表的尾结点p表示当前结点 int x; int main() { head new Node; r head; head-next NULL; cinx; while(x ! -1) { p new Node; p-data x; p-next NULL; r-next p; r p; cinx; } Node* mid findMiddleNode(head-next); if(mid!NULL) { coutmid-data; } return 0; }
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

深度学习环境搭建完全指南:PyTorch、CUDA、GPU配置一次讲清 2026/9/29 10:20:54

深度学习环境搭建完全指南:PyTorch、CUDA、GPU配置一次讲清

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
ARM SCP服务详解:从电源管理到SCMI接口的工程实践 2026/9/29 10:20:47

ARM SCP服务详解:从电源管理到SCMI接口的工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
路由器接路由器怎么设置?从接线到IP避坑的完整教程 2026/9/29 10:20:47

路由器接路由器怎么设置?从接线到IP避坑的完整教程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
我写了上百篇技术笔记,然后删掉了八成 2026/9/29 10:20:40

我写了上百篇技术笔记,然后删掉了八成

35 工程师最值钱的东西不是知识,是「当时为什么这么决定」一、一个找不到的坑 去年有天下午,我要查一个构建问题。 不是难题,恰恰相反——是一个三个月前我自己踩过、当时花了两天、后来靠某个开关绕过去的坑。 我记得很清楚:这个…

阅读更多 →
大模型推理优化实战:剪枝、量化与图优化如何榨干GPU算力 2026/9/29 10:20:27

大模型推理优化实战:剪枝、量化与图优化如何榨干GPU算力

1. 从一次深夜压测说起:我为什么非要撸一个模型优化器上个月给客户交付大模型推荐服务,4卡A100部署了个7B模型,业务方张口就要500 QPS。结果压测一跑,单卡只能扛80 QPS,延迟还飙到800ms,这数字在场的人都沉…

阅读更多 →
Trae 插件 Builder 模式实战:从 0 到 1 开发天气查询小程序,解锁 AI 编程新体验 2026/9/29 10:20:27

Trae 插件 Builder 模式实战:从 0 到 1 开发天气查询小程序,解锁 AI 编程新体验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉