剑指offer之判断链表是否包含环
1 问题
判断链表是否包含环
2 思路
2个指针,一个指针走一步,一个指针走2步,如果相遇则有,反之无。
3 代码实现
#include <stdio.h>
#include <stdlib.h>#define true 1
#define false 0;typedef struct node
{int value;struct node *next;
}Node;/**判断链表是否有环*/
int isCircleList(Node *head)
{if (head == NULL){return false;}Node *first = NULL;Node *second = NULL;first = head;second = head;while (second != NULL && (second->next) != NULL && (second->next->next != NULL)){first = first->next;second = second->next->next;if (first == second){return true;}}return false;
}int main()
{Node *head = NULL;Node *node1 = NULL;Node *node2 = NULL;Node *node3 = NULL;Node *node4 = NULL;Node *node5 = NULL;Node *node6 = NULL;Node *node7 = NULL;head = (Node *)malloc(sizeof(Node));node1 = (Node *)malloc(sizeof(Node));node2 = (Node *)malloc(sizeof(Node));node3 = (Node *)malloc(sizeof(Node));node4 = (Node *)malloc(sizeof(Node));node5 = (Node *)malloc(sizeof(Node));node6 = (Node *)malloc(sizeof(Node));node7 = (Node *)malloc(sizeof(Node));if (head == NULL || node1 == NULL || node2 == NULL || node3 == NULL|| node4 == NULL || node5 == NULL || node6 == NULL || node7 == NULL){printf("malloc fail\n");return false;}// node7<-node6 <-node5// | |//head->node1->node2->node3->node4head->value = 0;head->next = node1;node1->value = 1;node1->next = node2;node2->value = 2;node2->next = node3;node3->value = 3;node3->next = node4;node4->value = 4;node4->next = node5;node5->value = 5;node5->next = node6;node6->value = 6;node6->next = node7;node7->value = 7;node7->next = node2;int result = isCircleList(head);if (result){printf("list have circle\n");}else{printf("list do not have circle\n");}return true;
}
4 运行结果
list have circle
剑指offer之判断链表是否包含环相关推荐
- 剑指offer之找到链表里面包含环的入口节点
1 问题 剑指offer之找到链表里面包含环的入口节点,比如 // node7<-node6 <-node5// | |//head->node1->node2->nod ...
- 【LeetCode】剑指 Offer 18. 删除链表的节点
[LeetCode]剑指 Offer 18. 删除链表的节点 文章目录 [LeetCode]剑指 Offer 18. 删除链表的节点 一.双指针 一.双指针 本题删除值为 val 的结点需分为两步: ...
- 剑指 Offer 35. 复杂链表的复制
剑指 Offer 35. 复杂链表的复制 题目 题目链接 解题思路 题目理解 解题思路 具体代码 题目 题目链接 https://leetcode-cn.com/problems/fu-za-lian ...
- 《LeetCode力扣练习》剑指 Offer 24. 反转链表 Java
<LeetCode力扣练习>剑指 Offer 24. 反转链表 Java 一.资源 题目: 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1-& ...
- 剑指Offer:反转链表【24】
剑指Offer:反转链表[24] 题目描述 输入一个链表,反转链表后,输出新链表的表头. 解题分析 这道题我才发现我是属于那种真的笨,图都画出来了流程写不出来.看了别人的代码,总觉得自己差一步. 这也 ...
- 【LeetCode】剑指 Offer 35. 复杂链表的复制
[LeetCode]剑指 Offer 35. 复杂链表的复制 文章目录 [LeetCode]剑指 Offer 35. 复杂链表的复制 package offer;import java.util.Ar ...
- 【LeetCode】剑指 Offer 24. 反转链表
剑指 Offer 24. 反转链表 文章目录 剑指 Offer 24. 反转链表 一.迭代 二.递归 总结 一.迭代 在遍历链表时,将当前节点的 next 指针改为指向前一个结点.由于结点没有引用其前 ...
- 【算法】剑指 Offer 18. 删除链表的节点
1.概述 剑指 Offer 18. 删除链表的节点 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点. 返回删除后的链表的头节点. 注意:此题对比原题有改动 示例 1: 输入: he ...
- 剑指offer——面试题21:包含min函数的栈
剑指offer--面试题21:包含min函数的栈 Solution1: 辅助栈! 逻辑上要想清楚..但是用栈结构来实现栈,目的不知为何... class Solution { public:void ...
最新文章
- Java中关于==和equal的区别 以及equals()方法重写
- python树莓派串口通信实例_Python实现树莓派USB串口通讯及云端对接
- wxWidgets:wxGenericDirCtrl类用法
- 数据库可以存php代码,php把数组保存数据库程序代码
- python安装anaconda ubuntu_Ubuntu 16.4 安装anaconda 详细教程
- Java开发工具插件配置记录
- UE4 虚幻引擎,3D数学(一),3D坐标系,2D坐标系
- 计算机和材料成型及控制工程,材料成型及控制工程专业属于什么门类
- 江苏省计算机二级python往年卷_历年江苏省计算机二级考试真题及答案2008-2009
- 水星怎么设置网速最快_水星无线路由器怎么设置网速限制【设置方法】
- 红帽8LINUX命令行使用技巧
- Eclipse/Myeclipse自定义JSP模板
- excel不显示提示对话框
- 复现ReDet RTX 3090 pytorch1.8.1
- 8款炫酷的HTML5特效源码
- 黑群晖从入门到入土,自编译适合自己硬件的黑群晖7.1.x引导(黑群晖DSM7.X引导用arpl编译教程)
- IPv4与IPv6区别
- synergy使用方法和安装包
- 实现单点登录(伪登录)
- 2022卡塔尔世界杯感想
热门文章
- Dotnet 6.0 深度探索(一)
- .NET 6新特性试用 | 自动生成高性能日志记录代码
- Visual Studio 2022 Preview 3和2019 16.11发布
- 多语言应用开发中本地化信息对照表
- 构建属于你自己的dapr服务发现
- Azure Cosmos Db 介绍及演示
- 【LeetCode之C#解法】 移动零、爬楼梯
- 可能是Asp.net Core On host、 docker、kubernetes(K8s) 配置读取的最佳实践
- 旧 WCF 项目迁移到 asp.net core + gRPC 的尝试
- 将终结点图添加到你的ASP.NET Core应用程序中