c++编程题练习——检测单链表是否有环,若有,输出环入口
2017-10-13 20:03
211 查看
此题目是编程之美3.11扩展问题:简单并带有错误的环形单链表检测代码
看了相关资料后解题思路记录如下:
p1=p2=head;
while(p2!=NULL && p2->next!=NULL)
{
p1=p1->next;
p2=p2->next->next;
if(p1==p2)
break;
}
if(p2==NULL || p2->next==NULL)
{
cout<<"无环"<<endl; ////
return ;
}
else ///说明跳出while循环的原因是p1=p2,则说明存在环
{
cout<<"有环"<<endl;
p2=head;
while(p1!=p2)
{
p2=p2->next;
p1=p1->next;
}
return p1;
}
看了相关资料后解题思路记录如下:
p1=p2=head;
while(p2!=NULL && p2->next!=NULL)
{
p1=p1->next;
p2=p2->next->next;
if(p1==p2)
break;
}
if(p2==NULL || p2->next==NULL)
{
cout<<"无环"<<endl; ////
return ;
}
else ///说明跳出while循环的原因是p1=p2,则说明存在环
{
cout<<"有环"<<endl;
p2=head;
while(p1!=p2)
{
p2=p2->next;
p1=p1->next;
}
return p1;
}
相关文章推荐
- Java单链表基本操作(十)--判断单链表是否有环并输出环长度以及环的入口节点
- C++练习之 素数系列(判断单个数是否为素数,输出一定范围的素数,循环判断素数)
- 判断两个单链表是否相交 输出入口点
- 【C++编程题】高效判断单链表是否有环以及单链表的创建
- [笔试面试]单链表如何检测有环,环入口,环长,环前长度――快慢指针法(百度JAVA面试)
- 用c++编写一段完整代码,要求判断一个进程(例如qq.exe)是否存在,若存在,输出存在,不存在就输出不存在。
- linux 检测标准输出是否被重定向
- C++利用队列(Queue)求解迷宫(Maze)中指定起点和终点间是否有最短路径,如果有的话输出所需步数,如果没有输出
- C++程序设计 期末考试 编程题#10 输出指定结果二
- 小编程题之girl finger--(会用到freopen - C/C++文件输入输出利器)
- C++检测数字是否为素数(质数)
- 判断单链表是否存在环及求环入口点
- 【C++小练习】1M至10G文件输出器
- 判断单链表中是否存在环及查找环的入口点
- java常用类练习04(计算天数间隔和周数、输出21世纪的闰年、大小写字母转换、判断输出是否为闰年该月有几天星期几)
- 转:C/C++面试之算法系列--怎样快速检测出一个巨大的单链表中是否具备死链及其位置
- 判断单链表是否存在环及求环入口点
- 判断单链表是否有环及确定环的入口结点问题
- 【算法之链表(一)】判断单链表中是否有环、环的长度、环的入口节点,单链表的倒数第K个节点等
- 利用C++输出地址------指针练习