面试题四 C/C++面试秘笈 之判断链表是否存在环形链表问题-程序员面试题
来源:互联网 发布:天猫淘宝商城童装女 编辑:程序博客网 时间:2024/06/09 19:53
/**
*面试题 10
*判断链表是否存在环形链表问题
*
*/
bool isLoop(node*head,node **start)
{
node * p1=head,*p2=head;
if (head ==NULL || head->next ==NULL) {//head为NULL或者链表为空返回false
returnfalse;
}
do {
p1 = p1->next;//p1走一步
p2 = p2->next->next;//p2走两步
} while (p2 && p2->next && p1 != p2);
if (p1 == p2) {
*start = p1;//p1为回环开始节点
returntrue;
}else
returnfalse;
}
int main(int argc,const char * argv[]) {
//测试环形链表
node * linkLoop =create();//创建链表
node * start = linkLoop->next->next->next;//使第4节点为回环开始位置
start->next = linkLoop->next;//回环连接到第二个节点
bool bLoop =false;
node * loopStart =NULL;
bLoop = isLoop(linkLoop,&loopStart);
printf("bLoop = %d\n",bLoop);
printf("bLoop == loopStart ? %d\n",(start == loopStart));
return 0;
}
如果有任何问题,欢迎下方留言谈论,或者加入QQ群83459374交流
- 面试题四 C/C++面试秘笈 之判断链表是否存在环形链表问题-程序员面试题
- 面试题五 C/C++面试秘笈 之链表的正向排序--程序员面试题
- 面试题六 C/C++面试秘笈 之约瑟夫问题的解答--程序员面试题
- 面试题三 C/C++面试秘笈 查找单链表的中间元素 --程序员面试题
- C/C++经典面试题之判断链表是否有环
- C/C++面试题之链表
- 面试题---判断链表是否相交
- 面试题---判断链表是否相交
- 面试题一 C/C++面试秘笈之单链表的创建,增删改查及打印
- 面试题二 C/C++面试秘笈 之单链表逆转/反转
- 【IT笔试面试题整理】判断链表是否存在环路,并找出回路起点
- c语言链表以及面试题
- C++(后台开发面试题)-判断数组中是否存在重复元素
- 常见C语言面试题之九:链表逆序
- C/C++面试题(四)
- C常见面试题<四>
- C/C++面试题(四)
- 【程序员面试宝典】链表相关面试题
- java项目中的几种bean对象
- 如何卸载lnmp
- POJ 3252 Round Numbers (数论&&组合)
- PLC远程监控,PLC远程监视之通过花生壳,内网服务器映射
- lnmp环境搭建完全手册(四)——lnmp搭建(源码安装)
- 面试题四 C/C++面试秘笈 之判断链表是否存在环形链表问题-程序员面试题
- linux设备驱动归纳总结(四):5.多处理器下的竞态和并发
- 面试 转载
- Linux命令分类整理
- H264码流结构分析和rtp打包结构详解
- ubuntu13.10搭建nfs及通过fstab支持mount远程目录
- nw.js node-webkit系列(8)Native UI API MenuItem的使用
- Toast工具
- 【POJ 2777】 Count Color(线段树区间更新与查询)