剑指offer之判断链表是否包含环
发布日期:2021-06-29 14:13:36 浏览次数:2 分类:技术文章

本文共 2020 字,大约阅读时间需要 6 分钟。

1 问题

判断链表是否包含环

 

 

 

2 思路

2个指针,一个指针走一步,一个指针走2步,如果相遇则有,反之无。

 

 

 

 

3 代码实现

#include 
#include
#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->node4 head->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

 

转载地址:https://chenyu.blog.csdn.net/article/details/87748768 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:linux之lsof和netstat判断端口(port)被哪些应用占用
下一篇:linux之可视化查看磁盘大小并且删除大文件

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月16日 03时15分07秒