判断链表是否有环(两种方法)
2015-05-07 13:42
239 查看
如何判断一个链表是否是一个循环链表呢?什么链表是一个循环链表?看图:
一.步数比较法判断是否有环
二.快慢指针判断:
一.步数比较法判断是否有环
int HasLoop1(LinkList L){ LinkList cur1=L;//定义结点cur1 int pos1=0,pos2=0; while(cur1){ pos2=0;//每次重设为0 LinkList cur2=L; while(cur2){ if(cur2==cur1){ if(pos1==pos2) break;//步数一样说明没有环 else{ printf("环的位置在第%d个结点处",pos2); return 0; } } pos2++; cur2=cur2->next; } pos1++; cur1=cur1->next; } return 0; }
二.快慢指针判断:
int HasLoop2(LinkList L){ int step1=1; int step2=2; LinkList p=L; LinkList q=L; while(p!=NULL && q!=NULL && q->next!=NULL){ p=p->next;//p走一步 q=q->next->next;//q走两步 if(p==q) return 1; } return 0; }
相关文章推荐
- 判断链表是否有环的两种方式和创建有无环的方法
- Java判断链表是否有环的两种实现方法
- 链表是否有环的两种判断方法
- 【java基础 13】两种方法判断hashmap中是否形成环形链表
- 【java基础 13】两种方法判断hashmap中是否形成环形链表
- 判断输入字符串是否等效Int32位数字的两种方法:int.TryParse(string s,out int result)和 Try Catch
- JAVA 中两种判断输入的是否是数字的方法
- php判断变量是否是整数的两种方法
- C# 判断两张图片是否一致的两种方法
- Java判断单链表是否有环的两种实现方法
- 判断任意两台计算机的IP地址是否属于同一子网络的两种地址转换方法
- [C#.Net]判断文件是否被占用的两种方法
- Java 判断两个文件是否相同的两种方法
- C# 判断文件是否被占用的两种方法
- C# 判断文件是否被占用的两种方法
- Android 判断当前线程是否是主线程的两种方法
- 判断身份证号码是否正确javascript、asp两种验证方法
- 单向链表判断是否存在循环的经典方法
- C++数据结构与算法之判断一个链表是否为回文结构的方法
- JAVA 中两种判断输入的是否是数字的方法__正则化_