`
阿尔萨斯
  • 浏览: 4107896 次
社区版块
存档分类
最新评论

数据结构 - 判断单链表是否有环(C++)

 
阅读更多

设置两个指针(slow和fast),初始值都指向链表头,slow每次前进一步,fast每次前进二步。如果链表存在环,则fast必定先进入环,而slow后进入环,且两个指针必定相遇。(当然,fast先行到达链表尾部[NULL],则为无环链表)程序如下:

bool IsCircularLinkedList(list * head)
{
	list * slow = head , * fast = head;
	while ( fast && fast -> next )
	{
		slow = slow -> next;
		fast = fast -> next -> next;
		if ( slow == fast ) break ;
	}
	return ! (fast == NULL || fast -> next == NULL);
}
分享到:
评论

相关推荐

    C++课程设计-单链表——学生信息管理系统.docx

    数据结构说明 一、自定义的数据结构: 1、achieve(课程成绩)用于存放课程成绩信息包括课程数、课程名、成绩、学分、总分和平均分。 2、inform(学生基本信息)用于存放学生基本信息,包括姓名、学号、性别等。 ...

    数据结构与算法实验(C++):单链表实验-代码

    判断单链表是否递增 j.删除有序单链表中的值相同的多余结点(只保留一个值) 3)在主函数中定义对象,并调用成员函数,验证单链表的基本操作。 2.适用人群: 数据结构与算法初学者;C++编译基本掌握 3.使用场景: ...

    数据结构链表:单链表的代码实现

    本文通过数据结构教程的方法利用C++语言写了单链表的各项功能 功能包括 1.链表的初始化 2.链表的查找和判断是否为空表 3.插入 4.取值 5.插入(尾插法) 6.链表的输出 7.//删除指定元素 8.//链表的释放 其中有着详细...

    数据结构(C++)有关练习题

    在计算机科学发展过程中,早期数据结构教材大都采用PASCAL语言为描述工具,后来出现了采用C语言为描述工具的教材版本、至今又出现了采用C++语言为描述工具的多种教材版本。本教实验指导书是为已经学习过C++语言的...

    数据结构之树 MFC 可视化

    对于数据结构中树的判断,在MFC可视化界面中画图并判断

    用c++类模板,实现的单链表基本操作

    #include "stdafx.h" #include ...}//判断单链表是否为空 int GetElem_L(int i,T &e) const;//当第i个元素存在时,其值赋给e int ListInsert_L(int i,T &e);//在第i个位置插入元素e ……………………

    c++数据结构中链表的各种应用

    数据结构中,用c++的链表的各种应用初始化,销毁,清空,求长,判断是否为空,第i个元素,e元素所在位置,找前驱后继,插入删除元素

    使用C++实现单链表的基本操作:1、创建单链表2、遍历单链表3、单链表插入4、删除单链表5、判断是否为空6、单链表的

    使用C++实现单链表的基本操作: 1、创建单链表 2、遍历单链表 3、单链表插入 4、删除单链表 5、判断是否为空 6、单链表的长度 7、单链表查找 8、退出

    C++数据结构——栈.pdf

    3、栈的常⽤操作为: (1)弹栈,通常命名为pop (2)压栈,通常命名为push (3)求栈的⼤⼩ (4)判断栈是否为空 (5)获取栈顶元素的值 4、栈的常见分类: (1)基于数组的栈——以数组为底层数据结构时,通常以...

    单链表操作算法合集

    代码中包含单链表的常用操作,主要实现以下六个算法: 1.单链表的就地反转 2.链表相交或求公共起始节点 3.求链表倒数第n个节点 ...5.判断链表是否有环 6.将2个递增的链表合并为递减链表 并全部调试通过。

    数据结构:不带头结点单链表的实现及其一些基本操作.cpp

    3.初始化、判断是否为空 4.指定位置插入操作 5.在p节点后插入元素e 6.在p节点前插入元素e 7.删除操作:删除第i个节点,元素值有e传回 8.删除指定节点,不能删除尾部节点 9.按位序查找和按值查找 10.尾插法和...

    C++数据结构与算法之判断一个链表是否为回文结构的方法

    主要介绍了C++数据结构与算法之判断一个链表是否为回文结构的方法,结合实例形式分析了回文结构并结合实例给出了C++判断回文的操作技巧,需要的朋友可以参考下

    数据结构实验报告(C++) 实验4:查找与排序实验指导(含源码)

    整理一下之前的作业,说不定会帮上别人 如果其中选做题没有源码或没有运行截图,那是因为作者也未完成,请见谅 一、查找与排序实验(1)——查找 题目1....题目2.... 以单链表为存储结构的简单选择排序

    西南交通大学-zhy-数据结构第5次作业.zip

    数据结构;赵宏宇;一、查找 1. 算法设计题 :已知n元顺序表a0, a1, … , an-1按关键字递增有序存储。给定关键字值key,编写算法用对分查找求下标i,满足ai-1且aikey。 2. 编程题:输入n个两两互不相等的整数,以...

    C/C++程序员面试指南.杨国祥(带详细书签).pdf

    还介绍了排序算法及数据结构的实现,包括链表、堆栈、队列和树。此外,本书开始用两章篇幅详细介绍了中英文面试的注意事项、常见问题及程序员的职业规划等软件工程师的常识。最后四章详细讲解了现在流行的智力测试题...

    单链表(带头结点).cpp

    3.初始化、判断是否为空 4.指定位置插入操作 5.在p节点后插入元素e 6.在p节点前插入元素e 7.删除操作:删除第i个节点,元素值有e传回 8.删除指定节点,不能删除尾部节点 9.按位序查找和按值查找 10.尾插法和...

    图书收藏系统

    用C++实现的适用于数据结构的图书收藏系统,有代码。负责图书的索引、单链表存储图书、收藏夹添加图书、收藏夹的清空、收藏夹的显示、收藏夹图书的删除、按书号查询图书以及按价格或收藏时间排序。并且编写了图书类...

    88.cpp,设计算法判断单循环链表是否每个结点的值都是偶数

    设计算法判断单循环链表是否每个结点的值都是偶数,建立链表,判断,显示。 对任意输入的一组数据,建立一个递增有序的单链表。 将单链表L中的奇数项和偶数项结点分解开,并分别连成一个单链表。 用递增有序的链表A...

    C C++算法实例.c

    9.判断图中是否有负权回路 Bellman-ford 算法 10.第n最短路径问题 三、背包问题 1.0-1背包: 每个背包只能使用一次或有限次(可转化为一次): 2.可重复背包 四、排序算法 A.快速排序: B.插入排序: C....

    无序表寻找最小值.cpp

    设有一个由正整数组成的无序单链表,编写能够完成下列功能的算法: 找出最小值结点,且打印该数值。 若该数值是奇数,则将其与直接后继结点的数值交换。 若该数值是偶数时,则将其直接后继结点删除。 要求:判断奇数...

Global site tag (gtag.js) - Google Analytics