博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
判断单链表是否有环、找出两个单链表的交点
阅读量:2505 次
发布时间:2019-05-11

本文共 720 字,大约阅读时间需要 2 分钟。

主要思路:用两个指针,步长分别为1和2,遍历,相遇时即表示有环。

bool hasCircle(Node* head, Node* &encounter){         Node *fast = head, *low = head;         while(fast && fast->next)        {               fast = fast->next->next;              low = low->next;              if(fast == low)               {                   encounter = fast;                   return true;               }          }         // fast == NULL || fast->next == NULL         encounter = NULL;         return false;}
找到环点

Node* findEntry(Node* head, Node* encounter){           Node *p1 = head, *p2 = encounter;         while(p1 != p2)         {                p1 = p1->next;               p2 = p2->next;          }         return p1;}
找到交点的思路是把其中链表一个链表首尾相连,如果有环,则回到第一个问题。

转载地址:http://tnlgb.baihongyu.com/

你可能感兴趣的文章
一个异步网络请求的坑:关于NSURLConnection和NSRunLoopCommonModes
查看>>
iOS 如何放大按钮点击热区
查看>>
ios设备唯一标识获取策略
查看>>
获取推送通知的DeviceToken
查看>>
Could not find a storyboard named 'Main' in bundle NSBundle
查看>>
CocoaPods安装和使用教程
查看>>
Beginning Auto Layout Tutorial
查看>>
block使用小结、在arc中使用block、如何防止循环引用
查看>>
iPhone开发学习笔记002——Xib设计UITableViewCell然后动态加载
查看>>
iOS开发中遇到的问题整理 (一)
查看>>
Swift code into Object-C 出现 ***-swift have not found this file 的问题
查看>>
为什么你的App介绍写得像一坨翔?
查看>>
RTImageAssets插件--@3x可自动生成@2x图片
查看>>
iOS开发的一些奇巧淫技
查看>>
linux的挂载的问题,重启后就挂载就没有了
查看>>
docker原始镜像启动容器并创建Apache服务器实现反向代理
查看>>
docker容器秒死的解决办法
查看>>
管理网&业务网的一些笔记
查看>>
eclipse安装插件的两种方式在线和离线
查看>>
linux系统分区文件系统划分札记
查看>>