判断单向链表中是否有环
2015-09-21 15:41
239 查看
//判断单链表中是否有环
/*
基本思想:用两个指针,pSlow和pFast,一个快一个慢。
慢的跳一次,快的跳两次。当快的追上慢的的时候就表示有环了
*/
struct listtype
{
int data;
struct listtype* next;
}list;
int find_circle(list *head){
list *pfast = head;
list *pslow = head;
//首先判断是不是空的链表
if (pfast == NULL)
return -1;
//当链表非空而且有一个节点的时候或者剩下当前的和之后的一个非空节点时
//pfast-next非空 保证pfast->next->next不会出现指向空指针的下一个的情况
while (pfast&&pfast->next)
{
pfast = pfast->next->next;
pslow = pslow->next;
if (pfast == pslow)
return 1;
}
return 0;
}
/*
调用函数返回1时,表示单向链表有环;
返回-1时,表示为空;
返回值为0时,表示单向链表无环。
*/
/*
基本思想:用两个指针,pSlow和pFast,一个快一个慢。
慢的跳一次,快的跳两次。当快的追上慢的的时候就表示有环了
*/
struct listtype
{
int data;
struct listtype* next;
}list;
int find_circle(list *head){
list *pfast = head;
list *pslow = head;
//首先判断是不是空的链表
if (pfast == NULL)
return -1;
//当链表非空而且有一个节点的时候或者剩下当前的和之后的一个非空节点时
//pfast-next非空 保证pfast->next->next不会出现指向空指针的下一个的情况
while (pfast&&pfast->next)
{
pfast = pfast->next->next;
pslow = pslow->next;
if (pfast == pslow)
return 1;
}
return 0;
}
/*
调用函数返回1时,表示单向链表有环;
返回-1时,表示为空;
返回值为0时,表示单向链表无环。
*/
相关文章推荐
- Xcode里-ObjC, -all_load, -force_load
- 喜大普奔之终于会用C写Excel Function了
- gets函数哈scanf函数的区别
- LoghtOj1201(最大独立集)
- iOS—NSLog各种打印格式
- 由is_base_of看C++中的SFINAE
- 关于PHP浮点数你应该知道的(All ‘bogus’ about the float in PHP)
- Discuz论坛搭建
- MS SQL 全局临时表的删除
- zabbix 设备(自己的实践)
- 洗牌算法
- html 锚点
- Android 官方推荐 : DialogFragment 创建对话框
- Openssl的安装
- IAR将变量定义在指定地址
- 解决xManager、putty等工具ssh连接linux中文乱码
- android布局相关
- 【bzoj3524】【poi2014】【couriers】【可持久化线段树】
- iOS--进阶知识--Runtime
- 数组引用vs引用数组