Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17065
  • 博文数量: 5
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 55
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-15 11:38
文章分类

全部博文(5)

文章存档

2013年(5)

我的朋友

分类: C/C++

2013-04-18 15:09:20

回环也即一个圆,钟表就是一个环,时针和秒针终有相遇的时刻;由此我们可以看出,只要一个单位内,所走步长不同即可相遇;
可以设置两个指针,指针所走步长不同即可,若两者相遇说明该链表中有环,具体实现如下:
void Link_circle(Node *head)
{
 Node *p=head;
 if((NULL==p)||(NULL==p->next))//头结点为空或只有一个结点时不可能为环
 {
  return -1;
 }
 Node *p_singal,*p_double;
 p_singal=p_double=head;
 while(1)
 {
  if((NULL==p_singal)||(NULL==p_double))
  {
   return -1;
  }
  if(p_singal==p_double)
  {
   return 1;
  }
 }
}
返回值为1表示链表中有环

阅读(568) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~