判断一个单向链表是否有环
2016-07-29 18:46
239 查看
方法一:设置两个指针pre,last,慢的跳一步,快的跳两步,往链表末端方向移动,当慢的指针追赶上快的指针的时候说明单向链表有环。
方法二:使用map来记录结点是否被访问,若存在访问两次则说明链表有环。
node *pre = head; node *last = head; while(pre! = NULL && last != NULL) { pre = pre->next->next; last = pre->next; if(pre == last) { return true; } } return false;
方法二:使用map来记录结点是否被访问,若存在访问两次则说明链表有环。
if(!head) return false; node *p = head; while(p) { if(m[p] == 0) { m[p] == 1; } else if (m[p] == 1) { return true; } p=p->next; }
相关文章推荐
- [C/C++]反转链表
- C#实现基于链表的内存记事本实例
- C#模拟链表数据结构的实例解析
- C#实现单链表(线性表)完整实例
- C#定义并实现单链表实例解析
- C#数据结构之单链表(LinkList)实例详解
- C语言实现单链表逆序与逆序输出实例
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C++利用静态成员或类模板构建链表的方法讲解
- C++实现简单的学生管理系统
- C语言单链表常见操作汇总
- Linux内核链表实现过程
- C++链表倒序实现方法
- C#通过链表实现队列的方法
- Node.js环境下JavaScript实现单链表与双链表结构
- C#实现的简单链表类实例
- C数据结构之单链表详细示例分析
- 找出链表倒数第n个节点元素的二个方法
- Java数据结构之简单链表的定义与实现方法示例
- Java模拟有序链表数据结构的示例