判断一个单向链表中是否存在环
2014-09-12 15:42
239 查看
#include"list.h"
using namespace std;
bool ListisLoop(listnode* head)
{
listnode* pahead=head;
listnode* pbehind=head;
if(head->next==NULL)
return false;
while(pahead!=NULL&&pbehind!=NULL&&pbehind->next!=NULL&&pahead->next!=NULL)
{
pahead=pahead->next->next;
pbehind=pbehind->next;
if(pahead==pbehind)
return true;
}
return false;
}
int main()
{
list list1;
list1.addtolist(1);
list1.addtolist(2);
list1.addtolist(3);
list1.addtolist(4);
list1.addtolist(5);
list1.addtolist(6);
list1.addtolist(7);
list1.addtolist(8);
list1.addtolist(9);
list1.addtolist(10);
list1.print();
listnode* head=list1.Head();
if(ListisLoop(head))
cout<<"true"<<endl;
else
cout<<"false"<<endl;
return 0;
}
using namespace std;
bool ListisLoop(listnode* head)
{
listnode* pahead=head;
listnode* pbehind=head;
if(head->next==NULL)
return false;
while(pahead!=NULL&&pbehind!=NULL&&pbehind->next!=NULL&&pahead->next!=NULL)
{
pahead=pahead->next->next;
pbehind=pbehind->next;
if(pahead==pbehind)
return true;
}
return false;
}
int main()
{
list list1;
list1.addtolist(1);
list1.addtolist(2);
list1.addtolist(3);
list1.addtolist(4);
list1.addtolist(5);
list1.addtolist(6);
list1.addtolist(7);
list1.addtolist(8);
list1.addtolist(9);
list1.addtolist(10);
list1.print();
listnode* head=list1.Head();
if(ListisLoop(head))
cout<<"true"<<endl;
else
cout<<"false"<<endl;
return 0;
}
相关文章推荐
- Linked List Cycle-- 判断一个单向链表中是否有环存在
- 判断一个单向链表中是否存在环
- 判断一个单向链表中是否存在环
- 判断一个单向链表中是否存在环
- 如何判断一个单向链表是否存在循环的经典方法
- 判断一个单向链表中是否有环
- 判断一个单向链表是否形成了环状结构
- 判断一个链表是否存在环
- 判断一个单向链表是否有环和判断一个单向链表是否是循环链表
- 判断一个单向链表是否有环
- 5.判断一个链表是否存在环
- 判断两个单向链表是否存在环
- 【题目13】判断一个链表是否存在环
- 如何判断一个单向链表是否有环路?
- 如何判断一个链表是否有环? 2、如果链表为存在环,如果找到环的入口点?
- 剑指offer面试题15——扩展2:判断一个单向链表是否形成环结构
- 判断一个单向链表上是否有环
- 判断一个单向链表中是否有环
- 题目:①判断一个单向链表是否有环,如果有环则找到环的入口节点。 ②判断两个单向链表是否相交,如果相交则找到交点节点。
- Linked List Cycle 判断一个链表是否存在回路(循环)