户外拓展公司网站开发,马尔康网站建设,用手机做网站服务器,温州市网站制作公司1 问题
判断链表是否包含环 2 思路
2个指针#xff0c;一个指针走一步#xff0c;一个指针走2步#xff0c;如果相遇则有#xff0c;反之无。 3 代码实现
#include stdio.h
#include stdlib.h#define true 1
#define false 0;typedef struct node
{int …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