【C++】链表回环检测
//链表回环检测问题
#include<iostream>
#include<cstdlib>
using namespace std;
const int M=; struct node
{
int data;
node *next;
}; node *test1=new node();
node *test2=new node();//1->ring;2->no ring
node* vis[M]; bool test_ring(const node *head)
{
node *p=head->next;
int i=;
while(p)
{
for(int j=;j<i;j++)
{
if(vis[j]==p&&vis[j]!=NULL)
return true;
}
vis[i]=p;
p=p->next;
i++;
//cout<<vis[0]<<endl;
}
return false;
} bool advanced_test(const node *head)
{
node *slow=head->next;
node *fast=slow;
while(fast!=NULL&&fast->next!=NULL)
{
slow=slow->next;
fast=fast->next->next;
if(fast==slow)
{
return true;
}
}
return false;
} int main()
{
node *p=test1;
node *tag;//环切入点
for(int i=;i<=;i++)
{
node *t=new node;
t->data=i*;
if(i==)
tag=t;
p->next=t;
p=p->next;
p->next=NULL;
}
p->next=tag;
/*
p=test1->next;
while(p)
{
cout<<p->data<<endl;
p=p->next;
}
*/
p=test2;
for(int i=;i<=;i++)
{
node *t=new node;
t->data=i*;
p->next=t;
p=p->next;
p->next=NULL;
}
/*
p=test2->next;
while(p)
{
cout<<p->data<<endl;
p=p->next;
}
*/
for(int i=;i<M;i++)
vis[i]=NULL; cout<<"normal test:"<<endl;
if(test_ring(test1))
cout<<"ring!"<<endl;
else
cout<<"no ring!"<<endl;
if(test_ring(test2))
cout<<"ring!"<<endl;
else
cout<<"no ring!"<<endl; cout<<"advanced test:"<<endl;
if(advanced_test(test1))
cout<<"ring!"<<endl;
else
cout<<"no ring!"<<endl;
if(advanced_test(test2))
cout<<"ring!"<<endl;
else
cout<<"no ring!"<<endl; return ;
}

tz@HZAU
2019/3/14
【C++】链表回环检测的更多相关文章
- ORB-SLAM(六)回环检测
上一篇提到,无论在单目.双目还是RGBD中,追踪得到的位姿都是有误差的.随着路径的不断延伸,前面帧的误差会一直传递到后面去,导致最后一帧的位姿在世界坐标系里的误差有可能非常大.除了利用优化方法在局部和 ...
- DLoopDetector回环检测算法
词袋模型是一种文本表征方法,它应用到计算机视觉领域就称之为BoF(bag of features),通过BoF可以把一张图片表示成一个向量.DBoW2是一个视觉词袋库,它提供了生成和使用词典的接口,但 ...
- Code Reading: ORB-SLAM回环检测源码阅读+注释
之前研究过一些回环检测的内容,首先要看的自然是用词袋回环的鼻祖和正当继承人(没有冒犯VINS和LDSO的意思)ORB-SLAM.下面是我的代码注释.因为代码都是自己手打的,不是在源码上注释的,所以一些 ...
- segMatch:基于3D点云分割的回环检测
该论文的地址是:https://arxiv.org/pdf/1609.07720.pdf segmatch是一个提供车辆的回环检测的技术,使用提取和匹配分割的三维激光点云技术.分割的例子可以在下面的图 ...
- 浅谈SLAM的回环检测技术
什么是回环检测? 在讲解回环检测前,我们先来了解下回环的概念.在视觉SLAM问题中,位姿的估计往往是一个递推的过程,即由上一帧位姿解算当前帧位姿,因此其中的误差便这样一帧一帧的传递下去,也就是我们所说 ...
- 综述 | SLAM回环检测方法
本文作者任旭倩,公众号:计算机视觉life成员,由于格式原因,公式显示可能出问题,建议阅读原文链接:综述 | SLAM回环检测方法 在视觉SLAM问题中,位姿的估计往往是一个递推的过程,即由上一帧位姿 ...
- VINS 回环检测与全局优化
回环检测 VINS回环检测与全局优化都在pose_graph.cpp内处理.首先在pose_graph_node加载vocabulary文件给BriefDatabase用,如果要加载地图,会loadP ...
- 一个基于深度学习回环检测模块的简单双目 SLAM 系统
转载请注明出处,谢谢 原创作者:Mingrui 原创链接:https://www.cnblogs.com/MingruiYu/p/12634631.html 写在前面 最近在搞本科毕设,关于基于深度学 ...
- VINS 检测回环辅助激光建图
最近接到一个任务,在激光检测回环失败时,比如黑色物体多,场景大等,可否利用视觉进行回环检测.如果只是检测回环,现有的许多框架都可以使用.ORB-SLAM本身就有单目模式,且效果不错.但是发现ORB在检 ...
随机推荐
- django项目实现中文检索
在settings.py中设置 EMAIL_USE_SSL = True EMAIL_HOST = 'smtp.qq.com' # 如果是 163 改成 smtp.163.com EMAIL_POR ...
- C语言网 蓝桥杯 1117K-进制数
这是一道较难的题目,我刚开始用排列组合的方式来做,并没有做出来,故运用了的深搜算法. 深搜算法的概念: 选其中一条路,遍历完成后,逐步返回直至全部遍历,最后返回起点. 解题思路 : 题目中对零的个数没 ...
- Lua中的类型与值
[基础介绍] Lua是一种动态类型的语言.在语言中没有类型定义的语法,每个值都带有其自身的类型信息.在Lua中有8中基本类型,分别是: nil(空)类型 boolean(布尔)类型 number(数字 ...
- 翻译NYOJ
#include<iostream> #include<string.h> #include<stdio.h> using namespace std; ; int ...
- html基础技巧:点击、placeholder、文本、字体、清楚浮动
点击处理: 消除a标签点击后的边框,颜色(background:#fff) 1:a:focus{outline:none;} button去除边框 1:border:none 2:border:0px ...
- 集腋成裘-08-ECharts -简介-01
目标:让数据说话. 大数据时代的到来以及有效应用,大幅度提升了企业的管理能力.决策科学化与可执行性水平,推动传统决策方式朝着数据驱动转型.可视化数据分析对决策者产生的意义将在事前预测.事中感知以及事后 ...
- .net Core 目录浏览权限
StartUp 类库中 ConfigureServices:方法中增加文件夹浏览服务. Configure: 添加中间件 1.app.UseStaticFiles() 2.//增加文件访问权限app. ...
- PostgreSQL自学笔记:6 PostgreSQL函数
6 PostgreSQL函数 6.2 数学函数 abs(x) 绝对值 pi() 圆周率π select abs(-3),pi(); cookie: MySQL中的pi()默认值3.141593, Po ...
- 2019-2-13TextBox技巧
清空所有的TextBox文本框 思路:这些TextBox都是在一个窗体上的,这时候我们可以利用一个循环去遍历窗体上所有的TextBox控件.(代码如下) foreach (Control i in C ...
- [PKUSC2018]星际穿越
[PKUSC2018]星际穿越 题目大意: 有一排编号为\(1\sim n\)的\(n(n\le3\times10^5)\)个点,第\(i(i\ge 2)\)个点与\([l_i,i-1]\)之间所有点 ...