[算法学习]判断链表是否是环结构
2016-02-18 13:54
344 查看
问题描述: 判断链表是否是环结构。
解法与分析: 用两个指针的方法判断。
1. 第一个指针在第一个结点,第二个指针在第二个结点处;
2. 两个指针同时移动,第一个指针每次移动一个结点,第二个指针每次移动两个结点;
3. 当第二个指针和第一个指针指向的结点是同一个时,链表有环。
附:源码地址
解法与分析: 用两个指针的方法判断。
1. 第一个指针在第一个结点,第二个指针在第二个结点处;
2. 两个指针同时移动,第一个指针每次移动一个结点,第二个指针每次移动两个结点;
3. 当第二个指针和第一个指针指向的结点是同一个时,链表有环。
参考代码如下
[code]static class ListNode { int val; ListNode next; public ListNode(int val) { this.val = val; } public ListNode(int val, ListNode next) { this.val = val; this.next = next; } @Override public String toString() { return "ListNode [val=" + val + "]"; } } /** * 判断链表是否是环结构 * @param head * @return */ public static boolean isLoop(ListNode head) { if(head==null||head.next==null) { return false; } ListNode pSlow=head; ListNode pFast=head.next; while (pFast.next!=null) { if(pFast.equals(pSlow)) { return true; } pSlow=pSlow.next; pFast=pFast.next; pFast=pFast.next; if(pFast==null) { return false; } } return false; }
附:源码地址
相关文章推荐
- Java中通过UDP协议发送和接受数据
- linux 笔记
- Java中通过UDP协议发送和接受数据
- 1.基础部分
- 常用的抓包软件
- [算法学习]合并两个排序的链表
- 虚拟按键隐藏之后cocos游戏的适配问题
- Unity3d修炼之路:用Mesh绘制一个Cube
- 设计模式之装饰器模式
- iOS-获取当前设备的信息,网络状态,运营商,设备震动.获取设备信息
- metaq架构原理
- [算法学习]反转链表
- [算法学习]计算出二进制数中1的个数
- TCP长肥管道
- python2.7爬虫实战(房地产信息抓取)
- c++变量的作用域、生存期和可见性
- phpExcel常用方法详解【附有php导出excel加超级链接】
- 【python】编程语言入门经典100例--2
- java判断字符串包含某个字符段
- [算法学习]栈中的最小值